From 4e00a66ace8e340405ffedecb180a20b9b9bd1f7 Mon Sep 17 00:00:00 2001 From: "deepin-community-bot[bot]" <156989552+deepin-community-bot[bot]@users.noreply.github.com> Date: Mon, 23 Mar 2026 02:19:12 +0000 Subject: [PATCH 1/2] feat: update vim to 2:9.2.0218-1 --- .cirrus.yml | 6 +- .gitattributes | 16 +- CONTRIBUTING.md | 24 +- Filelist | 33 +- Makefile | 3 +- README.md | 19 +- README.txt | 2 +- README_VIM9.md | 4 +- READMEdir/Contents | 12 +- READMEdir/README_ami.txt | 6 +- READMEdir/README_amibin.txt | 4 +- READMEdir/README_amisrc.txt | 4 +- READMEdir/README_bindos.txt | 14 +- READMEdir/README_dos.txt | 32 +- READMEdir/README_extra.txt | 2 +- READMEdir/README_haiku.txt | 2 +- READMEdir/README_mac.txt | 2 +- READMEdir/README_ole.txt | 2 +- READMEdir/README_os2.txt | 2 +- READMEdir/README_os390.txt | 2 +- READMEdir/README_src.txt | 4 +- READMEdir/README_srcdos.txt | 4 +- READMEdir/README_unix.txt | 2 +- READMEdir/README_vms.txt | 2 +- READMEdir/README_w32s.txt | 2 +- ci/config.mk.sed | 2 +- ci/ddebs.list | 1 - ci/hlgroups.ignore | 1 + debian/changelog | 67 +- debian/changelog.upstream | 1698 -- debian/control | 4 +- debian/copyright | 4 + ...-popups-inconsistently-shifted-to-th.patch | 38 +- .../Set-NoDisplay-true-for-vim-desktop.patch | 36 - ...re-LaTeX-commands-for-tex-filetype-d.patch | 4 +- ...etype-using-the-contents-of-the-file.patch | 4 +- ...ision-to-disable-modelines-by-defaul.patch | 4 +- ...vimrc.tiny-when-Vim-is-invoked-as-vi.patch | 42 +- debian/patches/series | 1 - debian/rules | 11 +- debian/vim-common.install | 17 +- debian/vim-gtk3.alternatives | 4 + debian/vim-gui-common.install | 7 +- debian/vim-motif.alternatives | 4 + debian/vim-nox.alternatives | 4 + debian/vim-runtime.install | 8 +- debian/vim-runtime.lintian-overrides | 1 - debian/vim-tiny.alternatives | 4 + debian/vim.alternatives | 4 + lang/LICENSE.ru.txt | 23 +- lang/LICENSE.sv.txt | 78 + lang/LICENSE.zh_cn.txt | 60 + lang/README.sv.txt | 139 + lang/README.zh_cn.txt | 122 + nsis/README.txt | 6 +- nsis/gvim.nsi | 1 + nsis/lang/japanese.nsi | 4 +- nsis/lang/simpchinese.nsi | 8 +- nsis/lang/swedish.nsi | 288 + runtime/autoload/ccomplete.vim | 13 +- runtime/autoload/context.vim | 17 +- runtime/autoload/dist/ft.vim | 123 +- runtime/autoload/dist/script.vim | 6 +- runtime/autoload/dist/vim.vim | 4 +- runtime/autoload/dist/vim9.vim | 35 +- runtime/autoload/getscript.vim | 8 +- runtime/autoload/gnat.vim | 2 +- runtime/autoload/hare.vim | 39 +- runtime/autoload/haskellcomplete.vim | 15 +- runtime/autoload/python3complete.vim | 6 +- runtime/autoload/rustfmt.vim | 14 +- runtime/autoload/sqlcomplete.vim | 12 +- runtime/autoload/tar.vim | 6 +- runtime/autoload/tutor.vim | 2 +- runtime/autoload/typeset.vim | 157 +- runtime/autoload/vimgoto.vim | 7 +- runtime/autoload/xmlformat.vim | 26 +- runtime/autoload/zip.vim | 24 +- runtime/colors/catppuccin.vim | 808 + runtime/compiler/biome.vim | 23 + runtime/compiler/cabal.vim | 39 + runtime/compiler/context.vim | 11 +- runtime/compiler/cppcheck.vim | 8 +- runtime/compiler/eruby.vim | 1 - runtime/compiler/gcc.vim | 2 + runtime/compiler/gnat.vim | 2 +- runtime/compiler/hare.vim | 19 +- runtime/compiler/maven.vim | 36 +- runtime/compiler/mypy.vim | 8 +- runtime/compiler/pandoc.vim | 5 +- runtime/compiler/perl.vim | 2 +- runtime/compiler/perlcritic.vim | 2 +- runtime/compiler/podchecker.vim | 2 +- runtime/compiler/pylint.vim | 7 +- runtime/compiler/pyright.vim | 25 + runtime/compiler/rake.vim | 1 - runtime/compiler/rime_deployer.vim | 3 + runtime/compiler/rspec.vim | 1 - runtime/compiler/ruby.vim | 1 - runtime/compiler/rubyunit.vim | 1 - runtime/compiler/ruff.vim | 9 +- runtime/compiler/rustc.vim | 10 +- runtime/compiler/tombi.vim | 69 + runtime/compiler/ty.vim | 20 + runtime/compiler/vimdoc.vim | 3 + runtime/compiler/yamllint.vim | 3 + runtime/compiler/zig_build_exe.vim | 10 +- runtime/compiler/zig_test.vim | 10 +- runtime/defaults.vim | 4 +- runtime/doc/Make_all.mak | 5 + runtime/doc/Make_mvc.mak | 55 + runtime/doc/Makefile | 25 +- runtime/doc/arabic.txt | 4 +- runtime/doc/autocmd.txt | 22 +- runtime/doc/builtin.txt | 339 +- runtime/doc/change.txt | 11 +- runtime/doc/channel.txt | 131 +- runtime/doc/cmdline.txt | 12 +- runtime/doc/debug.txt | 4 +- runtime/doc/debugger.txt | 4 +- runtime/doc/develop.txt | 18 +- runtime/doc/diff.txt | 4 +- runtime/doc/digraph.txt | 4 +- runtime/doc/doctags.c | 5 +- runtime/doc/editing.txt | 4 +- runtime/doc/eval.txt | 177 +- runtime/doc/evim-ja.UTF-8.1 | 9 +- runtime/doc/evim-sv.1 | 55 + runtime/doc/evim-sv.UTF-8.1 | 55 + runtime/doc/farsi.txt | 4 +- runtime/doc/filetype.txt | 5 +- runtime/doc/fold.txt | 4 +- runtime/doc/ft_ada.txt | 2 +- runtime/doc/ft_context.txt | 45 +- runtime/doc/ft_hare.txt | 90 +- runtime/doc/ft_mp.txt | 36 +- runtime/doc/ft_rust.txt | 11 +- runtime/doc/ft_sql.txt | 2 +- runtime/doc/gui.txt | 4 +- runtime/doc/gui_w32.txt | 30 +- runtime/doc/gui_x11.txt | 4 +- runtime/doc/hangulin.txt | 5 +- runtime/doc/hebrew.txt | 4 +- runtime/doc/help.txt | 4 +- runtime/doc/helphelp.txt | 17 +- runtime/doc/howto.txt | 4 +- runtime/doc/if_cscop.txt | 5 +- runtime/doc/if_lua.txt | 4 +- runtime/doc/if_mzsch.txt | 4 +- runtime/doc/if_ole.txt | 4 +- runtime/doc/if_perl.txt | 5 +- runtime/doc/if_pyth.txt | 12 +- runtime/doc/if_ruby.txt | 5 +- runtime/doc/if_sniff.txt | 4 +- runtime/doc/if_tcl.txt | 4 +- runtime/doc/indent.txt | 4 +- runtime/doc/index.txt | 10 +- runtime/doc/insert.txt | 6 +- runtime/doc/intro.txt | 18 +- runtime/doc/map.txt | 16 +- runtime/doc/mbyte.txt | 20 +- runtime/doc/message.txt | 22 +- runtime/doc/mlang.txt | 4 +- runtime/doc/motion.txt | 10 +- runtime/doc/netbeans.txt | 16 +- runtime/doc/options.txt | 390 +- runtime/doc/os_390.txt | 5 +- runtime/doc/os_amiga.txt | 4 +- runtime/doc/os_beos.txt | 4 +- runtime/doc/os_dos.txt | 4 +- runtime/doc/os_haiku.txt | 4 +- runtime/doc/os_mac.txt | 4 +- runtime/doc/os_mint.txt | 4 +- runtime/doc/os_msdos.txt | 4 +- runtime/doc/os_os2.txt | 4 +- runtime/doc/os_qnx.txt | 4 +- runtime/doc/os_risc.txt | 4 +- runtime/doc/os_unix.txt | 4 +- runtime/doc/os_vms.txt | 2 +- runtime/doc/os_win32.txt | 4 +- runtime/doc/pattern.txt | 10 +- runtime/doc/pi_getscript.txt | 5 +- runtime/doc/pi_gzip.txt | 4 +- runtime/doc/pi_paren.txt | 4 +- runtime/doc/pi_spec.txt | 2 +- runtime/doc/pi_tar.txt | 2 +- runtime/doc/pi_tutor.txt | 2 +- runtime/doc/pi_vimball.txt | 20 +- runtime/doc/pi_zip.txt | 2 +- runtime/doc/popup.txt | 52 +- runtime/doc/print.txt | 6 +- runtime/doc/quickfix.txt | 59 +- runtime/doc/quickref.txt | 8 +- runtime/doc/quotes.txt | 4 +- runtime/doc/recover.txt | 4 +- runtime/doc/remote.txt | 4 +- runtime/doc/repeat.txt | 13 +- runtime/doc/rileft.txt | 4 +- runtime/doc/russian.txt | 14 +- runtime/doc/scroll.txt | 4 +- runtime/doc/sign.txt | 4 +- runtime/doc/spell.txt | 6 +- runtime/doc/sponsor.txt | 85 +- runtime/doc/starting.txt | 32 +- runtime/doc/syntax.txt | 106 +- runtime/doc/tabpage.txt | 4 +- runtime/doc/tags | 97 +- runtime/doc/tagsrch.txt | 10 +- runtime/doc/term.txt | 20 +- runtime/doc/terminal.txt | 42 +- runtime/doc/testing.txt | 2 +- runtime/doc/textprop.txt | 21 +- runtime/doc/tips.txt | 42 +- runtime/doc/todo.txt | 103 +- runtime/doc/uganda.txt | 119 +- runtime/doc/undo.txt | 2 +- runtime/doc/userfunc.txt | 16 +- runtime/doc/usr_01.txt | 6 +- runtime/doc/usr_02.txt | 8 +- runtime/doc/usr_03.txt | 4 +- runtime/doc/usr_04.txt | 4 +- runtime/doc/usr_05.txt | 41 +- runtime/doc/usr_06.txt | 4 +- runtime/doc/usr_07.txt | 4 +- runtime/doc/usr_08.txt | 7 +- runtime/doc/usr_09.txt | 8 +- runtime/doc/usr_10.txt | 15 +- runtime/doc/usr_11.txt | 4 +- runtime/doc/usr_12.txt | 4 +- runtime/doc/usr_20.txt | 4 +- runtime/doc/usr_21.txt | 4 +- runtime/doc/usr_22.txt | 164 +- runtime/doc/usr_23.txt | 4 +- runtime/doc/usr_24.txt | 8 +- runtime/doc/usr_25.txt | 4 +- runtime/doc/usr_26.txt | 4 +- runtime/doc/usr_27.txt | 4 +- runtime/doc/usr_28.txt | 4 +- runtime/doc/usr_29.txt | 4 +- runtime/doc/usr_30.txt | 12 +- runtime/doc/usr_31.txt | 4 +- runtime/doc/usr_32.txt | 4 +- runtime/doc/usr_40.txt | 14 +- runtime/doc/usr_41.txt | 39 +- runtime/doc/usr_42.txt | 4 +- runtime/doc/usr_43.txt | 4 +- runtime/doc/usr_44.txt | 12 +- runtime/doc/usr_45.txt | 4 +- runtime/doc/usr_50.txt | 4 +- runtime/doc/usr_51.txt | 4 +- runtime/doc/usr_52.txt | 4 +- runtime/doc/usr_90.txt | 4 +- runtime/doc/usr_toc.txt | 4 +- runtime/doc/various.txt | 5 +- runtime/doc/version4.txt | 4 +- runtime/doc/version5.txt | 4 +- runtime/doc/version6.txt | 4 +- runtime/doc/version7.txt | 4 +- runtime/doc/version8.txt | 4 +- runtime/doc/version9.txt | 10742 +++++++++++- runtime/doc/vi_diff.txt | 12 +- runtime/doc/vietnamese.txt | 24 +- runtime/doc/vim-ja.UTF-8.1 | 152 +- runtime/doc/vim-sv.1 | 512 + runtime/doc/vim-sv.UTF-8.1 | 512 + runtime/doc/vim9.txt | 1895 ++- runtime/doc/vim9class.txt | 9 +- runtime/doc/vimdiff-ja.UTF-8.1 | 2 +- runtime/doc/vimdiff-sv.1 | 48 + runtime/doc/vimdiff-sv.UTF-8.1 | 48 + runtime/doc/vimtutor-ja.UTF-8.1 | 95 +- runtime/doc/vimtutor-sv.1 | 93 + runtime/doc/vimtutor-sv.UTF-8.1 | 93 + runtime/doc/visual.txt | 4 +- runtime/doc/wayland.txt | 20 +- runtime/doc/windows.txt | 74 +- runtime/doc/workshop.txt | 4 +- runtime/doc/xxd-it.1 | 26 +- runtime/doc/xxd-it.UTF-8.1 | 26 +- runtime/doc/xxd-ja.UTF-8.1 | 56 +- runtime/doc/xxd-sv.1 | 363 + runtime/doc/xxd-sv.UTF-8.1 | 363 + runtime/doc/xxd.1 | 19 +- runtime/doc/xxd.man | 51 +- runtime/filetype.vim | 38 +- runtime/ftplugin/asm.vim | 3 +- runtime/ftplugin/bicep-params.vim | 3 + runtime/ftplugin/bicep.vim | 14 + runtime/ftplugin/bpftrace.vim | 16 + runtime/ftplugin/c.vim | 19 +- runtime/ftplugin/cabal.vim | 7 +- runtime/ftplugin/context.vim | 4 +- runtime/ftplugin/csh.vim | 67 +- runtime/ftplugin/env.vim | 19 + runtime/ftplugin/eruby.vim | 1 - runtime/ftplugin/fish.vim | 22 + runtime/ftplugin/gdb.vim | 51 +- runtime/ftplugin/gleam.vim | 4 +- runtime/ftplugin/go.vim | 4 +- runtime/ftplugin/hare.vim | 17 +- runtime/ftplugin/haredoc.vim | 17 +- runtime/ftplugin/haskell.vim | 11 +- runtime/ftplugin/hog.vim | 13 +- runtime/ftplugin/julia.vim | 8 +- runtime/ftplugin/kitty.vim | 13 + runtime/ftplugin/leex.vim | 14 + runtime/ftplugin/lf.vim | 2 +- runtime/ftplugin/logtalk.dict | 2 + runtime/ftplugin/mf.vim | 3 +- runtime/ftplugin/mp.vim | 3 +- runtime/ftplugin/nickel.vim | 13 + runtime/ftplugin/perl.vim | 2 +- runtime/ftplugin/plsql.vim | 0 runtime/ftplugin/pod.vim | 2 +- runtime/ftplugin/quarto.vim | 4 + runtime/ftplugin/raku.vim | 2 +- runtime/ftplugin/rst.vim | 4 +- runtime/ftplugin/rust.vim | 3 +- runtime/ftplugin/sieve.vim | 6 +- runtime/ftplugin/skhd.vim | 20 + runtime/ftplugin/sml.vim | 41 + runtime/ftplugin/sshconfig.vim | 4 +- runtime/ftplugin/sudoers.vim | 3 +- runtime/ftplugin/systemverilog.vim | 3 +- runtime/ftplugin/tap.vim | 2 +- runtime/ftplugin/toml.vim | 5 +- runtime/ftplugin/tt2html.vim | 2 +- runtime/ftplugin/vim.vim | 12 +- runtime/ftplugin/xkb.vim | 14 + runtime/ftplugin/xml.vim | 19 +- runtime/ftplugin/xs.vim | 2 +- runtime/ftplugin/yara.vim | 22 + runtime/ftplugin/zsh.vim | 11 +- runtime/gvim.desktop | 4 +- runtime/indent/bpftrace.vim | 19 + runtime/indent/context.vim | 10 +- runtime/indent/eruby.vim | 1 - runtime/indent/handlebars.vim | 128 + runtime/indent/hare.vim | 10 +- runtime/indent/julia.vim | 23 +- runtime/indent/lf.vim | 10 + runtime/indent/mf.vim | 12 +- runtime/indent/mp.vim | 2 +- runtime/indent/odin.vim | 8 +- runtime/indent/perl.vim | 2 +- runtime/indent/php.vim | 11 +- runtime/indent/raku.vim | 2 +- runtime/indent/ruby.vim | 12 +- runtime/indent/rust.vim | 89 +- runtime/indent/sh.vim | 10 + runtime/indent/sml.vim | 17 +- runtime/indent/testdir/rust.in | 50 + runtime/indent/testdir/rust.ok | 50 + runtime/indent/testdir/yaml.in | 19 + runtime/indent/testdir/yaml.ok | 19 + runtime/indent/xml.vim | 30 +- runtime/indent/yaml.vim | 13 +- runtime/keymap/esperanto_utf-8.vim | 8 +- runtime/keymap/greek_utf-8.vim | 4 +- runtime/keymap/hebrewp_utf-8.vim | 56 +- runtime/lang/Make_mvc.mak | 36 + runtime/lang/Makefile | 2 +- runtime/lang/menu_ca.utf-8.vim | 2 +- runtime/lang/menu_ca_es.utf-8.vim | 2 +- runtime/lang/menu_chinese_gb.936.vim | 4 +- runtime/lang/menu_chinese_taiwan.950.vim | 4 +- runtime/lang/menu_ja_jp.euc-jp.vim | 6 +- runtime/lang/menu_ja_jp.utf-8.vim | 6 +- runtime/lang/menu_japanese_japan.932.vim | 6 +- runtime/lang/menu_pt_pt.utf-8.vim | 2 +- runtime/lang/menu_ru_ru.cp1251.vim | 11 +- runtime/lang/menu_ru_ru.koi8-r.vim | 11 +- runtime/lang/menu_ru_ru.utf-8.vim | 11 +- runtime/lang/menu_sr_rs.iso_8859-5.vim | 10 +- runtime/lang/menu_sv_se.latin1.vim | 240 +- runtime/lang/menu_tr_tr.cp1254.vim | 6 +- runtime/lang/menu_tr_tr.iso_8859-9.vim | 6 +- runtime/lang/menu_zh_cn.utf-8.vim | 4 +- runtime/lang/menu_zh_tw.utf-8.vim | 4 +- runtime/macros/less.sh | 32 +- runtime/menu.vim | 20 +- runtime/optwin.vim | 23 +- .../pack/dist/opt/editorconfig/LICENSE.PSF | 0 .../opt/helpcurwin/autoload/helpcurwin.vim | 42 + .../dist/opt/helpcurwin/doc/helpcurwin.txt | 59 + runtime/pack/dist/opt/helpcurwin/doc/tags | 5 + .../dist/opt/helpcurwin/plugin/helpcurwin.vim | 14 + .../dist/opt/matchit/autoload/matchit.vim | 47 +- runtime/pack/dist/opt/matchit/doc/matchit.txt | 59 +- runtime/pack/dist/opt/matchit/doc/tags | 2 +- .../pack/dist/opt/matchit/plugin/matchit.vim | 2 +- runtime/pack/dist/opt/netrw/README.md | 6 +- .../pack/dist/opt/netrw/autoload/netrw.vim | 347 +- .../pack/dist/opt/netrw/autoload/netrw/fs.vim | 3 +- .../pack/dist/opt/osc52/autoload/osc52.vim | 97 + runtime/pack/dist/opt/osc52/doc/osc52.txt | 71 + runtime/pack/dist/opt/osc52/doc/tags | 7 + runtime/pack/dist/opt/osc52/plugin/osc52.vim | 59 + .../dist/opt/termdebug/plugin/termdebug.vim | 95 +- runtime/syntax/8th.vim | 411 +- runtime/syntax/Makefile | 9 +- runtime/syntax/apache.vim | 3 +- runtime/syntax/bpftrace.vim | 66 + runtime/syntax/c.vim | 11 +- runtime/syntax/cangjie.vim | 56 +- runtime/syntax/context.vim | 2 +- runtime/syntax/cpp.vim | 27 +- runtime/syntax/csh.vim | 12 +- runtime/syntax/css.vim | 239 +- runtime/syntax/debcontrol.vim | 32 +- runtime/syntax/django.vim | 2 + runtime/syntax/env.vim | 28 + runtime/syntax/erlang.vim | 4 +- runtime/syntax/eruby.vim | 1 - runtime/syntax/fstab.vim | 7 +- runtime/syntax/fvwm.vim | 12 +- runtime/syntax/gdb.vim | 1699 +- runtime/syntax/generator/README.md | 2 +- runtime/syntax/generator/gen_syntax_vim.vim | 31 +- runtime/syntax/generator/vim.vim.base | 224 +- runtime/syntax/glimmer.vim | 51 + runtime/syntax/handlebars.vim | 144 + runtime/syntax/hare.vim | 236 +- runtime/syntax/haredoc.vim | 13 +- runtime/syntax/haskell.vim | 6 +- runtime/syntax/help.vim | 37 +- runtime/syntax/i3config.vim | 48 +- runtime/syntax/java.vim | 36 +- runtime/syntax/julia.vim | 58 +- runtime/syntax/krl.vim | 79 +- runtime/syntax/leex.vim | 63 + runtime/syntax/lf.vim | 10 +- runtime/syntax/lhaskell.vim | 1 + runtime/syntax/log.vim | 293 +- runtime/syntax/logtalk.vim | 7 +- runtime/syntax/lynx.vim | 187 +- runtime/syntax/make.vim | 28 +- runtime/syntax/mason.vim | 2 +- runtime/syntax/mbsync.vim | 8 +- runtime/syntax/mf.vim | 2 +- runtime/syntax/mp.vim | 2 +- runtime/syntax/nginx.vim | 6 +- runtime/syntax/odin.vim | 15 +- runtime/syntax/perl.vim | 2 +- runtime/syntax/po.vim | 44 +- runtime/syntax/pod.vim | 2 +- runtime/syntax/privoxy.vim | 210 +- runtime/syntax/progress.vim | 4 +- runtime/syntax/python.vim | 51 +- runtime/syntax/qf.vim | 10 +- runtime/syntax/racket.vim | 16 +- runtime/syntax/raku.vim | 2 +- runtime/syntax/rapid.vim | 159 +- runtime/syntax/ruby.vim | 1 - runtime/syntax/sed.vim | 78 +- runtime/syntax/sh.vim | 54 +- .../syntax/shared/context-data-context.vim | 340 - .../syntax/shared/context-data-interfaces.vim | 1185 -- .../syntax/shared/context-data-metafun.vim | 117 - runtime/syntax/shared/context-data-tex.vim | 250 - runtime/syntax/shared/debversions.vim | 6 +- runtime/syntax/skhd.vim | 137 + runtime/syntax/sml.vim | 42 +- runtime/syntax/spec.vim | 13 +- runtime/syntax/sqloracle.vim | 9 +- runtime/syntax/sshconfig.vim | 20 +- runtime/syntax/sshdconfig.vim | 39 +- runtime/syntax/sudoers.vim | 341 +- runtime/syntax/swayconfig.vim | 62 +- runtime/syntax/tcsh.vim | 37 +- runtime/syntax/tera.vim | 37 +- runtime/syntax/testdir/README.txt | 19 +- .../syntax/testdir/dumps/c_noreturn_00.dump | 20 + .../syntax/testdir/dumps/c_noreturn_01.dump | 20 + .../syntax/testdir/dumps/cpp_noreturn_00.dump | 20 + .../syntax/testdir/dumps/cpp_noreturn_01.dump | 20 + .../syntax/testdir/dumps/cpp_numbers_00.dump | 20 + .../syntax/testdir/dumps/cpp_numbers_01.dump | 20 + runtime/syntax/testdir/dumps/csh_00.dump | 20 + runtime/syntax/testdir/dumps/css_1_00.dump | 20 + runtime/syntax/testdir/dumps/gdb_00.dump | 20 + runtime/syntax/testdir/dumps/gdb_01.dump | 20 + runtime/syntax/testdir/dumps/gdb_02.dump | 20 + runtime/syntax/testdir/dumps/gdb_03.dump | 20 + runtime/syntax/testdir/dumps/gdb_04.dump | 20 + runtime/syntax/testdir/dumps/gdb_05.dump | 20 + runtime/syntax/testdir/dumps/gdb_06.dump | 20 + runtime/syntax/testdir/dumps/gdb_07.dump | 20 + runtime/syntax/testdir/dumps/gdb_08.dump | 20 + runtime/syntax/testdir/dumps/gdb_09.dump | 20 + runtime/syntax/testdir/dumps/gdb_10.dump | 20 + runtime/syntax/testdir/dumps/gdb_11.dump | 20 + runtime/syntax/testdir/dumps/gdb_12.dump | 20 + runtime/syntax/testdir/dumps/gdb_13.dump | 20 + runtime/syntax/testdir/dumps/gdb_14.dump | 20 + runtime/syntax/testdir/dumps/gdb_15.dump | 20 + runtime/syntax/testdir/dumps/gdb_16.dump | 20 + runtime/syntax/testdir/dumps/gdb_17.dump | 20 + runtime/syntax/testdir/dumps/gdb_18.dump | 20 + runtime/syntax/testdir/dumps/gdb_19.dump | 20 + runtime/syntax/testdir/dumps/gdb_20.dump | 20 + runtime/syntax/testdir/dumps/gdb_21.dump | 20 + runtime/syntax/testdir/dumps/gdb_22.dump | 20 + runtime/syntax/testdir/dumps/gdb_23.dump | 20 + runtime/syntax/testdir/dumps/gdb_24.dump | 20 + runtime/syntax/testdir/dumps/gdb_25.dump | 20 + runtime/syntax/testdir/dumps/gdb_26.dump | 20 + runtime/syntax/testdir/dumps/gdb_27.dump | 20 + runtime/syntax/testdir/dumps/gdb_28.dump | 20 + runtime/syntax/testdir/dumps/gdb_29.dump | 20 + runtime/syntax/testdir/dumps/gdb_30.dump | 20 + runtime/syntax/testdir/dumps/gdb_31.dump | 20 + runtime/syntax/testdir/dumps/gdb_32.dump | 20 + runtime/syntax/testdir/dumps/gdb_33.dump | 20 + runtime/syntax/testdir/dumps/gdb_34.dump | 20 + runtime/syntax/testdir/dumps/gdb_35.dump | 20 + runtime/syntax/testdir/dumps/gdb_36.dump | 20 + runtime/syntax/testdir/dumps/gdb_37.dump | 20 + runtime/syntax/testdir/dumps/gdb_38.dump | 20 + runtime/syntax/testdir/dumps/gdb_39.dump | 20 + runtime/syntax/testdir/dumps/gdb_40.dump | 20 + runtime/syntax/testdir/dumps/gdb_41.dump | 20 + runtime/syntax/testdir/dumps/gdb_42.dump | 20 + runtime/syntax/testdir/dumps/gdb_43.dump | 20 + runtime/syntax/testdir/dumps/gdb_44.dump | 20 + runtime/syntax/testdir/dumps/gdb_45.dump | 20 + runtime/syntax/testdir/dumps/gdb_46.dump | 20 + runtime/syntax/testdir/dumps/gdb_47.dump | 20 + runtime/syntax/testdir/dumps/gdb_48.dump | 20 + runtime/syntax/testdir/dumps/gdb_49.dump | 20 + runtime/syntax/testdir/dumps/gdb_50.dump | 20 + runtime/syntax/testdir/dumps/gdb_51.dump | 20 + runtime/syntax/testdir/dumps/gdb_52.dump | 20 + runtime/syntax/testdir/dumps/gdb_53.dump | 20 + runtime/syntax/testdir/dumps/gdb_54.dump | 20 + runtime/syntax/testdir/dumps/gdb_55.dump | 20 + runtime/syntax/testdir/dumps/gdb_56.dump | 20 + runtime/syntax/testdir/dumps/gdb_57.dump | 20 + runtime/syntax/testdir/dumps/gdb_58.dump | 20 + runtime/syntax/testdir/dumps/gdb_59.dump | 20 + runtime/syntax/testdir/dumps/gdb_60.dump | 20 + runtime/syntax/testdir/dumps/gdb_61.dump | 20 + runtime/syntax/testdir/dumps/gdb_62.dump | 20 + runtime/syntax/testdir/dumps/gdb_63.dump | 20 + runtime/syntax/testdir/dumps/gdb_64.dump | 20 + runtime/syntax/testdir/dumps/gdb_65.dump | 20 + runtime/syntax/testdir/dumps/gdb_66.dump | 20 + runtime/syntax/testdir/dumps/gdb_67.dump | 20 + runtime/syntax/testdir/dumps/gdb_68.dump | 20 + runtime/syntax/testdir/dumps/gdb_69.dump | 20 + runtime/syntax/testdir/dumps/gdb_70.dump | 20 + runtime/syntax/testdir/dumps/gdb_71.dump | 20 + runtime/syntax/testdir/dumps/gdb_72.dump | 20 + runtime/syntax/testdir/dumps/gdb_73.dump | 20 + runtime/syntax/testdir/dumps/gdb_74.dump | 20 + runtime/syntax/testdir/dumps/gdb_75.dump | 20 + runtime/syntax/testdir/dumps/gdb_76.dump | 20 + runtime/syntax/testdir/dumps/gdb_77.dump | 20 + runtime/syntax/testdir/dumps/gdb_78.dump | 20 + runtime/syntax/testdir/dumps/gdb_79.dump | 20 + runtime/syntax/testdir/dumps/gdb_80.dump | 20 + runtime/syntax/testdir/dumps/gdb_81.dump | 20 + runtime/syntax/testdir/dumps/gdb_82.dump | 20 + runtime/syntax/testdir/dumps/gdb_83.dump | 20 + runtime/syntax/testdir/dumps/gdb_84.dump | 20 + runtime/syntax/testdir/dumps/gdb_85.dump | 20 + runtime/syntax/testdir/dumps/gdb_86.dump | 20 + runtime/syntax/testdir/dumps/gdb_87.dump | 20 + runtime/syntax/testdir/dumps/gdb_88.dump | 20 + runtime/syntax/testdir/dumps/gdb_89.dump | 20 + runtime/syntax/testdir/dumps/gdb_90.dump | 20 + runtime/syntax/testdir/dumps/gdb_91.dump | 20 + runtime/syntax/testdir/dumps/gdb_92.dump | 20 + .../dumps/gdb_multiline_commands_00.dump | 20 + .../dumps/gdb_multiline_commands_01.dump | 20 + .../dumps/gdb_multiline_commands_02.dump | 20 + runtime/syntax/testdir/dumps/haskell_00.dump | 20 + .../testdir/dumps/help_digraph_table_00.dump | 20 + .../testdir/dumps/help_digraph_table_01.dump | 20 + .../testdir/dumps/help_digraph_table_02.dump | 20 + .../dumps/java_methods_indent2_01.dump | 2 +- .../dumps/java_methods_indent2_02.dump | 2 +- .../dumps/java_methods_indent2_03.dump | 2 +- .../dumps/java_methods_indent2_04.dump | 2 +- .../dumps/java_methods_indent2_05.dump | 2 +- .../dumps/java_methods_indent2_06.dump | 22 +- .../dumps/java_methods_indent2_07.dump | 20 + .../java_methods_indent2_signature_01.dump | 2 +- .../java_methods_indent2_signature_02.dump | 2 +- .../java_methods_indent2_signature_03.dump | 2 +- .../java_methods_indent2_signature_04.dump | 2 +- .../java_methods_indent2_signature_05.dump | 2 +- .../java_methods_indent2_signature_06.dump | 20 + .../java_methods_indent2_signature_07.dump | 20 + .../dumps/java_methods_indent4_01.dump | 2 +- .../dumps/java_methods_indent4_02.dump | 2 +- .../dumps/java_methods_indent4_03.dump | 2 +- .../dumps/java_methods_indent4_04.dump | 2 +- .../dumps/java_methods_indent4_05.dump | 2 +- .../dumps/java_methods_indent4_06.dump | 20 +- .../dumps/java_methods_indent4_07.dump | 20 + .../java_methods_indent4_signature_01.dump | 2 +- .../java_methods_indent4_signature_02.dump | 2 +- .../java_methods_indent4_signature_03.dump | 2 +- .../java_methods_indent4_signature_04.dump | 2 +- .../java_methods_indent4_signature_05.dump | 2 +- .../java_methods_indent4_signature_06.dump | 38 +- .../java_methods_indent4_signature_07.dump | 20 + .../dumps/java_methods_indent8_01.dump | 2 +- .../dumps/java_methods_indent8_02.dump | 2 +- .../dumps/java_methods_indent8_03.dump | 2 +- .../dumps/java_methods_indent8_04.dump | 2 +- .../dumps/java_methods_indent8_05.dump | 2 +- .../dumps/java_methods_indent8_06.dump | 18 +- .../dumps/java_methods_indent8_07.dump | 20 + .../dumps/java_methods_indent8_08.dump | 20 + .../java_methods_indent8_signature_01.dump | 2 +- .../java_methods_indent8_signature_02.dump | 2 +- .../java_methods_indent8_signature_03.dump | 2 +- .../java_methods_indent8_signature_04.dump | 2 +- .../java_methods_indent8_signature_05.dump | 2 +- .../java_methods_indent8_signature_06.dump | 36 +- .../java_methods_indent8_signature_07.dump | 20 + .../testdir/dumps/java_methods_style_01.dump | 2 +- .../testdir/dumps/java_methods_style_02.dump | 2 +- .../testdir/dumps/java_methods_style_03.dump | 2 +- .../testdir/dumps/java_methods_style_04.dump | 2 +- .../testdir/dumps/java_methods_style_05.dump | 32 +- .../testdir/dumps/java_methods_style_06.dump | 20 + .../java_methods_style_signature_01.dump | 2 +- .../java_methods_style_signature_02.dump | 2 +- .../java_methods_style_signature_03.dump | 2 +- .../java_methods_style_signature_04.dump | 10 +- .../java_methods_style_signature_05.dump | 20 + .../java_methods_style_signature_06.dump | 20 + runtime/syntax/testdir/dumps/leex_00.dump | 20 + runtime/syntax/testdir/dumps/leex_01.dump | 20 + runtime/syntax/testdir/dumps/make_01_00.dump | 20 + runtime/syntax/testdir/dumps/po_00.dump | 20 + runtime/syntax/testdir/dumps/po_01.dump | 20 + runtime/syntax/testdir/dumps/po_02.dump | 20 + runtime/syntax/testdir/dumps/po_03.dump | 20 + .../python_constants_builtin_default_00.dump | 20 + ...python_constants_builtin_highlight_00.dump | 20 + .../python_constants_keyword_default_00.dump | 20 + ...python_constants_keyword_highlight_00.dump | 20 + .../testdir/dumps/python_numbers_00.dump | 20 + .../testdir/dumps/python_numbers_01.dump | 20 + .../testdir/dumps/python_numbers_02.dump | 20 + .../testdir/dumps/python_numbers_03.dump | 20 + .../testdir/dumps/python_numbers_04.dump | 20 + .../dumps/python_strings_bytes_01.dump | 2 +- .../dumps/python_strings_bytes_02.dump | 2 +- .../dumps/python_strings_bytes_03.dump | 2 +- .../dumps/python_strings_bytes_04.dump | 2 +- .../dumps/python_strings_bytes_05.dump | 2 +- .../dumps/python_strings_bytes_06.dump | 16 +- .../dumps/python_strings_bytes_07.dump | 40 +- .../dumps/python_strings_bytes_08.dump | 40 +- .../dumps/python_strings_bytes_09.dump | 40 +- .../dumps/python_strings_bytes_10.dump | 40 +- .../dumps/python_strings_bytes_11.dump | 40 +- .../dumps/python_strings_bytes_12.dump | 40 +- .../dumps/python_strings_bytes_13.dump | 20 + .../dumps/python_strings_bytes_14.dump | 20 + .../dumps/python_strings_bytes_15.dump | 20 + runtime/syntax/testdir/dumps/sed_00.dump | 20 + runtime/syntax/testdir/dumps/sed_01.dump | 20 + runtime/syntax/testdir/dumps/sed_02.dump | 20 + runtime/syntax/testdir/dumps/sed_03.dump | 20 + runtime/syntax/testdir/dumps/sh_10_00.dump | 20 + runtime/syntax/testdir/dumps/sh_15_00.dump | 20 + .../syntax/testdir/dumps/sh_generic_01.dump | 2 +- .../syntax/testdir/dumps/sh_generic_02.dump | 2 +- .../syntax/testdir/dumps/sh_generic_03.dump | 2 +- .../syntax/testdir/dumps/sh_generic_04.dump | 2 +- .../syntax/testdir/dumps/sh_generic_05.dump | 12 +- .../syntax/testdir/dumps/sh_generic_06.dump | 12 +- .../syntax/testdir/dumps/sh_generic_07.dump | 10 +- .../syntax/testdir/dumps/sh_generic_08.dump | 10 +- .../syntax/testdir/dumps/sh_generic_09.dump | 32 +- .../syntax/testdir/dumps/sh_generic_10.dump | 20 + .../syntax/testdir/dumps/sh_generic_11.dump | 20 + .../syntax/testdir/dumps/sh_generic_12.dump | 20 + .../syntax/testdir/dumps/sh_generic_13.dump | 20 + .../syntax/testdir/dumps/sh_ksh2020_01.dump | 2 +- .../syntax/testdir/dumps/sh_ksh2020_02.dump | 2 +- .../syntax/testdir/dumps/sh_ksh2020_03.dump | 2 +- .../syntax/testdir/dumps/sh_ksh2020_04.dump | 2 +- .../syntax/testdir/dumps/sh_ksh2020_05.dump | 12 +- .../syntax/testdir/dumps/sh_ksh2020_06.dump | 12 +- .../syntax/testdir/dumps/sh_ksh2020_07.dump | 10 +- .../syntax/testdir/dumps/sh_ksh2020_08.dump | 10 +- .../syntax/testdir/dumps/sh_ksh2020_09.dump | 32 +- .../syntax/testdir/dumps/sh_ksh2020_10.dump | 20 + .../syntax/testdir/dumps/sh_ksh2020_11.dump | 20 + .../syntax/testdir/dumps/sh_ksh2020_12.dump | 20 + .../syntax/testdir/dumps/sh_ksh2020_13.dump | 20 + runtime/syntax/testdir/dumps/sh_ksh88_01.dump | 2 +- runtime/syntax/testdir/dumps/sh_ksh88_02.dump | 2 +- runtime/syntax/testdir/dumps/sh_ksh88_03.dump | 2 +- runtime/syntax/testdir/dumps/sh_ksh88_04.dump | 2 +- runtime/syntax/testdir/dumps/sh_ksh88_05.dump | 12 +- runtime/syntax/testdir/dumps/sh_ksh88_06.dump | 12 +- runtime/syntax/testdir/dumps/sh_ksh88_07.dump | 10 +- runtime/syntax/testdir/dumps/sh_ksh88_08.dump | 10 +- runtime/syntax/testdir/dumps/sh_ksh88_09.dump | 32 +- runtime/syntax/testdir/dumps/sh_ksh88_10.dump | 20 + runtime/syntax/testdir/dumps/sh_ksh88_11.dump | 20 + runtime/syntax/testdir/dumps/sh_ksh88_12.dump | 20 + runtime/syntax/testdir/dumps/sh_ksh88_13.dump | 20 + .../testdir/dumps/sh_ksh93_generic_01.dump | 2 +- .../testdir/dumps/sh_ksh93_generic_02.dump | 2 +- .../testdir/dumps/sh_ksh93_generic_03.dump | 2 +- .../testdir/dumps/sh_ksh93_generic_04.dump | 2 +- .../testdir/dumps/sh_ksh93_generic_05.dump | 14 +- .../testdir/dumps/sh_ksh93_generic_06.dump | 12 +- .../testdir/dumps/sh_ksh93_generic_07.dump | 10 +- .../testdir/dumps/sh_ksh93_generic_08.dump | 10 +- .../testdir/dumps/sh_ksh93_generic_09.dump | 34 +- .../testdir/dumps/sh_ksh93_generic_10.dump | 20 + .../testdir/dumps/sh_ksh93_generic_11.dump | 20 + .../testdir/dumps/sh_ksh93_generic_12.dump | 20 + .../testdir/dumps/sh_ksh93_generic_13.dump | 20 + .../syntax/testdir/dumps/sh_ksh93u_01.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93u_02.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93u_03.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93u_04.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93u_05.dump | 12 +- .../syntax/testdir/dumps/sh_ksh93u_06.dump | 12 +- .../syntax/testdir/dumps/sh_ksh93u_07.dump | 10 +- .../syntax/testdir/dumps/sh_ksh93u_08.dump | 10 +- .../syntax/testdir/dumps/sh_ksh93u_09.dump | 32 +- .../syntax/testdir/dumps/sh_ksh93u_10.dump | 20 + .../syntax/testdir/dumps/sh_ksh93u_11.dump | 20 + .../syntax/testdir/dumps/sh_ksh93u_12.dump | 20 + .../syntax/testdir/dumps/sh_ksh93u_13.dump | 20 + .../syntax/testdir/dumps/sh_ksh93v_01.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93v_02.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93v_03.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93v_04.dump | 2 +- .../syntax/testdir/dumps/sh_ksh93v_05.dump | 12 +- .../syntax/testdir/dumps/sh_ksh93v_06.dump | 12 +- .../syntax/testdir/dumps/sh_ksh93v_07.dump | 10 +- .../syntax/testdir/dumps/sh_ksh93v_08.dump | 10 +- .../syntax/testdir/dumps/sh_ksh93v_09.dump | 32 +- .../syntax/testdir/dumps/sh_ksh93v_10.dump | 20 + .../syntax/testdir/dumps/sh_ksh93v_11.dump | 20 + .../syntax/testdir/dumps/sh_ksh93v_12.dump | 20 + .../syntax/testdir/dumps/sh_ksh93v_13.dump | 20 + runtime/syntax/testdir/dumps/sh_mksh_01.dump | 2 +- runtime/syntax/testdir/dumps/sh_mksh_02.dump | 2 +- runtime/syntax/testdir/dumps/sh_mksh_03.dump | 2 +- runtime/syntax/testdir/dumps/sh_mksh_04.dump | 2 +- runtime/syntax/testdir/dumps/sh_mksh_05.dump | 12 +- runtime/syntax/testdir/dumps/sh_mksh_06.dump | 12 +- runtime/syntax/testdir/dumps/sh_mksh_07.dump | 10 +- runtime/syntax/testdir/dumps/sh_mksh_08.dump | 10 +- runtime/syntax/testdir/dumps/sh_mksh_09.dump | 32 +- runtime/syntax/testdir/dumps/sh_mksh_10.dump | 20 + runtime/syntax/testdir/dumps/sh_mksh_11.dump | 20 + runtime/syntax/testdir/dumps/sh_mksh_12.dump | 20 + runtime/syntax/testdir/dumps/sh_mksh_13.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_00.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_01.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_02.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_03.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_04.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_05.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_06.dump | 20 + .../testdir/dumps/sh_mksh_gibberish_07.dump | 20 + runtime/syntax/testdir/dumps/skhdrc_00.dump | 20 + runtime/syntax/testdir/dumps/skhdrc_01.dump | 20 + runtime/syntax/testdir/dumps/skhdrc_02.dump | 20 + runtime/syntax/testdir/dumps/skhdrc_03.dump | 20 + runtime/syntax/testdir/dumps/skhdrc_04.dump | 20 + runtime/syntax/testdir/dumps/skhdrc_05.dump | 20 + runtime/syntax/testdir/dumps/sml_00.dump | 20 + runtime/syntax/testdir/dumps/sml_01.dump | 20 + runtime/syntax/testdir/dumps/sml_02.dump | 20 + runtime/syntax/testdir/dumps/sml_03.dump | 20 + runtime/syntax/testdir/dumps/sml_04.dump | 20 + .../testdir/dumps/sudoers_Defaults_00.dump | 20 + .../testdir/dumps/sudoers_Defaults_01.dump | 20 + .../testdir/dumps/sudoers_Defaults_02.dump | 20 + .../testdir/dumps/sudoers_user-spec_00.dump | 20 + .../testdir/dumps/sudoers_user-spec_01.dump | 20 + .../testdir/dumps/sudoers_user-spec_02.dump | 20 + .../testdir/dumps/sudoers_user-spec_03.dump | 20 + runtime/syntax/testdir/dumps/tcsh_00.dump | 20 + runtime/syntax/testdir/dumps/tera_01.dump | 4 +- runtime/syntax/testdir/dumps/tera_02.dump | 12 +- runtime/syntax/testdir/dumps/tera_03.dump | 16 +- runtime/syntax/testdir/dumps/tera_04.dump | 20 +- runtime/syntax/testdir/dumps/tera_05.dump | 14 +- runtime/syntax/testdir/dumps/tera_06.dump | 18 +- runtime/syntax/testdir/dumps/tera_07.dump | 26 +- runtime/syntax/testdir/dumps/tera_08.dump | 20 +- runtime/syntax/testdir/dumps/tera_09.dump | 2 +- .../testdir/dumps/vim9_comments_01.dump | 2 +- .../testdir/dumps/vim9_comments_02.dump | 2 +- .../testdir/dumps/vim9_comments_03.dump | 2 +- .../testdir/dumps/vim9_comments_04.dump | 4 +- .../testdir/dumps/vim9_comments_05.dump | 14 +- .../testdir/dumps/vim9_def_variables_12.dump | 4 +- .../testdir/dumps/vim9_function_calls_02.dump | 2 +- .../syntax/testdir/dumps/vim9_types_00.dump | 4 +- .../dumps/vim9_types_example_object_00.dump | 20 + .../dumps/vim9_types_example_object_01.dump | 20 + .../testdir/dumps/vim9_types_object_00.dump | 20 + .../testdir/dumps/vim9_types_object_01.dump | 20 + .../testdir/dumps/vim9_variables_02.dump | 2 +- .../testdir/dumps/vim9_variables_03.dump | 2 +- .../testdir/dumps/vim9_variables_04.dump | 2 +- .../testdir/dumps/vim9_variables_05.dump | 2 +- .../testdir/dumps/vim9_variables_06.dump | 2 +- .../testdir/dumps/vim9_variables_07.dump | 2 +- .../testdir/dumps/vim9_variables_08.dump | 2 +- .../testdir/dumps/vim9_variables_09.dump | 2 +- .../testdir/dumps/vim9_variables_10.dump | 2 +- .../testdir/dumps/vim9_variables_11.dump | 4 +- .../testdir/dumps/vim9_variables_12.dump | 32 +- .../testdir/dumps/vim9_variables_13.dump | 32 +- .../testdir/dumps/vim9_variables_14.dump | 20 + .../testdir/dumps/vim9_variables_15.dump | 20 + .../syntax/testdir/dumps/vim_comments_01.dump | 2 +- .../syntax/testdir/dumps/vim_comments_02.dump | 2 +- .../syntax/testdir/dumps/vim_comments_03.dump | 2 +- .../syntax/testdir/dumps/vim_comments_04.dump | 18 +- .../testdir/dumps/vim_ex_augroup_01.dump | 2 +- .../testdir/dumps/vim_ex_augroup_02.dump | 10 +- .../testdir/dumps/vim_ex_augroup_03.dump | 22 +- .../testdir/dumps/vim_ex_augroup_04.dump | 20 + .../dumps/vim_ex_breakpoint_commands_00.dump | 20 + .../dumps/vim_ex_breakpoint_commands_01.dump | 20 + .../dumps/vim_ex_breakpoint_commands_02.dump | 20 + .../dumps/vim_ex_breakpoint_commands_03.dump | 20 + .../dumps/vim_ex_breakpoint_commands_04.dump | 20 + .../dumps/vim_ex_breakpoint_commands_05.dump | 20 + .../syntax/testdir/dumps/vim_ex_cd_00.dump | 20 + .../syntax/testdir/dumps/vim_ex_cd_01.dump | 20 + .../syntax/testdir/dumps/vim_ex_cd_02.dump | 20 + .../syntax/testdir/dumps/vim_ex_cd_03.dump | 20 + .../syntax/testdir/dumps/vim_ex_cd_04.dump | 20 + .../syntax/testdir/dumps/vim_ex_cd_05.dump | 20 + .../syntax/testdir/dumps/vim_ex_cd_06.dump | 20 + .../syntax/testdir/dumps/vim_ex_debug_00.dump | 20 + .../syntax/testdir/dumps/vim_ex_defer_00.dump | 6 +- .../testdir/dumps/vim_ex_do_commands_00.dump | 20 + .../testdir/dumps/vim_ex_do_commands_01.dump | 20 + .../testdir/dumps/vim_ex_do_commands_02.dump | 20 + .../testdir/dumps/vim_ex_do_commands_03.dump | 20 + .../syntax/testdir/dumps/vim_ex_help_00.dump | 20 + .../syntax/testdir/dumps/vim_ex_help_01.dump | 20 + .../syntax/testdir/dumps/vim_ex_help_02.dump | 20 + .../syntax/testdir/dumps/vim_ex_help_03.dump | 20 + .../testdir/dumps/vim_ex_helpgrep_00.dump | 26 +- .../testdir/dumps/vim_ex_history_00.dump | 20 + .../testdir/dumps/vim_ex_history_01.dump | 20 + .../testdir/dumps/vim_ex_history_02.dump | 20 + .../testdir/dumps/vim_ex_history_03.dump | 20 + .../testdir/dumps/vim_ex_history_04.dump | 20 + .../testdir/dumps/vim_ex_history_05.dump | 20 + .../testdir/dumps/vim_ex_language_00.dump | 20 + .../testdir/dumps/vim_ex_language_01.dump | 20 + .../testdir/dumps/vim_ex_language_02.dump | 20 + .../testdir/dumps/vim_ex_language_03.dump | 20 + .../testdir/dumps/vim_ex_language_04.dump | 20 + .../testdir/dumps/vim_ex_language_05.dump | 20 + .../testdir/dumps/vim_ex_language_06.dump | 20 + .../testdir/dumps/vim_ex_language_07.dump | 20 + .../testdir/dumps/vim_ex_language_08.dump | 20 + .../testdir/dumps/vim_ex_language_09.dump | 20 + .../dumps/vim_ex_prompt_commands_00.dump | 20 + .../dumps/vim_ex_prompt_commands_01.dump | 20 + .../dumps/vim_ex_prompt_commands_02.dump | 20 + .../testdir/dumps/vim_ex_syntax_00.dump | 14 +- .../testdir/dumps/vim_ex_syntax_01.dump | 26 +- .../testdir/dumps/vim_ex_syntax_02.dump | 30 +- .../testdir/dumps/vim_ex_syntax_03.dump | 30 +- .../testdir/dumps/vim_ex_syntax_04.dump | 30 +- .../testdir/dumps/vim_ex_syntax_05.dump | 32 +- .../testdir/dumps/vim_ex_syntax_06.dump | 32 +- .../testdir/dumps/vim_ex_syntax_07.dump | 32 +- .../testdir/dumps/vim_ex_syntax_08.dump | 32 +- .../testdir/dumps/vim_ex_syntax_09.dump | 36 +- .../testdir/dumps/vim_ex_syntax_10.dump | 32 +- .../testdir/dumps/vim_ex_syntax_11.dump | 32 +- .../testdir/dumps/vim_ex_syntax_12.dump | 32 +- .../testdir/dumps/vim_ex_syntax_13.dump | 32 +- .../testdir/dumps/vim_ex_syntax_14.dump | 34 +- .../testdir/dumps/vim_ex_syntax_15.dump | 38 +- .../testdir/dumps/vim_ex_syntax_16.dump | 20 + .../testdir/dumps/vim_ex_syntax_17.dump | 20 + .../testdir/dumps/vim_ex_syntax_18.dump | 20 + .../testdir/dumps/vim_ex_syntax_19.dump | 20 + .../testdir/dumps/vim_ex_syntax_20.dump | 20 + .../testdir/dumps/vim_ex_syntax_21.dump | 20 + .../testdir/dumps/vim_ex_vimgrep_03.dump | 4 +- .../testdir/dumps/vim_ex_vimgrep_04.dump | 2 +- .../testdir/dumps/vim_function_calls_02.dump | 4 +- .../dumps/vim_function_variables_22.dump | 2 +- .../dumps/vim_function_variables_23.dump | 4 +- .../testdir/dumps/vim_variables_22.dump | 4 +- .../testdir/dumps/vim_variables_23.dump | 2 +- runtime/syntax/testdir/input/c_noreturn.c | 23 + runtime/syntax/testdir/input/cpp_noreturn.cpp | 20 + runtime/syntax/testdir/input/cpp_numbers.cpp | 20 + runtime/syntax/testdir/input/csh.csh | 6 + runtime/syntax/testdir/input/css_1.css | 5 + runtime/syntax/testdir/input/gdb.gdb | 1655 ++ .../testdir/input/gdb_multiline_commands.gdb | 41 + runtime/syntax/testdir/input/haskell.hs | 4 + .../testdir/input/java_methods_indent2.java | 27 + .../input/java_methods_indent2_signature.java | 27 + .../testdir/input/java_methods_indent4.java | 27 + .../input/java_methods_indent4_signature.java | 27 + .../testdir/input/java_methods_indent8.java | 27 + .../input/java_methods_indent8_signature.java | 27 + .../testdir/input/java_methods_style.java | 27 + .../input/java_methods_style_signature.java | 27 + runtime/syntax/testdir/input/leex.xrl | 28 + runtime/syntax/testdir/input/make_01.mak | 16 + runtime/syntax/testdir/input/po.po | 51 + .../input/python_constants_builtin_default.py | 11 + .../python_constants_builtin_highlight.py | 11 + .../input/python_constants_keyword_default.py | 11 + .../python_constants_keyword_highlight.py | 11 + .../testdir/input/python_strings_bytes.py | 41 + runtime/syntax/testdir/input/sed.sed | 65 + runtime/syntax/testdir/input/sh_10.sh | 12 + runtime/syntax/testdir/input/sh_15.sh | 13 + runtime/syntax/testdir/input/sh_generic.ksh | 68 +- runtime/syntax/testdir/input/sh_ksh2020.ksh | 68 +- runtime/syntax/testdir/input/sh_ksh88.ksh | 68 +- .../syntax/testdir/input/sh_ksh93_generic.ksh | 68 +- runtime/syntax/testdir/input/sh_ksh93u.ksh | 68 +- runtime/syntax/testdir/input/sh_ksh93v.ksh | 68 +- runtime/syntax/testdir/input/sh_mksh.ksh | 68 +- .../testdir/input/sh_mksh_gibberish.ksh | 126 + runtime/syntax/testdir/input/skhdrc.skhdrc | 104 + runtime/syntax/testdir/input/sml.sml | 71 + .../testdir/input/sudoers_Defaults.sudoers | 43 + .../testdir/input/sudoers_user-spec.sudoers | 43 + runtime/syntax/testdir/input/tcsh.tcsh | 6 + .../syntax/testdir/input/vim9_comments.vim | 7 + .../testdir/input/vim9_def_variables.vim | 2 +- runtime/syntax/testdir/input/vim9_types.vim | 2 +- .../input/vim9_types_example_object.vim | 29 + .../testdir/input/vim9_types_object.vim | 27 + .../syntax/testdir/input/vim9_variables.vim | 29 + runtime/syntax/testdir/input/vim_comments.vim | 9 + .../syntax/testdir/input/vim_ex_augroup.vim | 17 +- .../input/vim_ex_breakpoint_commands.vim | 95 + runtime/syntax/testdir/input/vim_ex_cd.vim | 110 + runtime/syntax/testdir/input/vim_ex_debug.vim | 13 + runtime/syntax/testdir/input/vim_ex_defer.vim | 3 + .../testdir/input/vim_ex_do_commands.vim | 58 + runtime/syntax/testdir/input/vim_ex_help.vim | Bin 0 -> 986 bytes .../syntax/testdir/input/vim_ex_helpgrep.vim | 7 + .../syntax/testdir/input/vim_ex_history.vim | 89 + .../syntax/testdir/input/vim_ex_language.vim | 172 + .../testdir/input/vim_ex_prompt_commands.vim | 46 + .../syntax/testdir/input/vim_ex_syntax.vim | 106 + .../testdir/input/vim_function_variables.vim | 2 +- .../syntax/testdir/input/vim_variables.vim | 2 +- runtime/syntax/testdir/runtest.vim | 319 +- runtime/syntax/toml.vim | 25 +- runtime/syntax/tt2.vim | 2 +- runtime/syntax/tt2html.vim | 2 +- runtime/syntax/vim.vim | 303 +- runtime/syntax/wget.vim | 4 +- runtime/syntax/wget2.vim | 7 +- runtime/syntax/xs.vim | 2 +- runtime/syntax/zsh.vim | 29 +- runtime/tools/README.txt | 3 + runtime/tools/preproc_indent.vim | 148 + runtime/tutor/README.sv.txt | 36 + runtime/tutor/en/vim-01-beginner.tutor | 2 +- runtime/tutor/en/vim-02-beginner.tutor | 25 +- runtime/tutor/ru/vim-01-beginner.tutor | 42 +- runtime/tutor/ru/vim-02-beginner.tutor | 168 +- runtime/tutor/ru/vim-02-beginner.tutor.json | 17 +- runtime/tutor/sv/vim-01-beginner.tutor | 1000 ++ runtime/tutor/sv/vim-01-beginner.tutor.json | 45 + runtime/tutor/sv/vim-02-beginner.tutor | 290 + runtime/tutor/sv/vim-02-beginner.tutor.json | 15 + runtime/tutor/tutor1.es | 16 +- runtime/tutor/tutor1.ja | 38 +- runtime/tutor/tutor1.ru | 4 +- runtime/tutor/tutor1.sv | 939 +- runtime/tutor/tutor2 | 11 +- runtime/tutor/tutor2.es | 321 + runtime/tutor/tutor2.ja | 299 + runtime/tutor/tutor2.ru | 160 +- runtime/tutor/tutor2.sv | 294 + runtime/tutor/zh/vim-01-beginner.tutor | 907 + runtime/tutor/zh/vim-01-beginner.tutor.json | 44 + runtime/vim.desktop | 1 + runtime/vim16x16_png.h | 23 + runtime/vim32x32_png.h | 33 + runtime/vim48x48_png.h | 44 + runtime/xdg.vim | 44 + src/GvimExt/GvimExt.reg | 4 +- src/GvimExt/Make_ming.mak | 15 +- src/GvimExt/gvimext.inf | 2 +- src/INSTALL | 9 +- src/Make_cyg_ming.mak | 5 +- src/Make_vms.mms | 4 +- src/Makefile | 72 +- src/README.md | 2 +- src/alloc.c | 4 +- src/arglist.c | 20 +- src/auto/configure | 45 +- src/auto/nmake/tools.mak | 2 +- src/autocmd.c | 30 +- src/beval.c | 24 +- src/blob.c | 29 +- src/buffer.c | 362 +- src/bufwrite.c | 61 +- src/change.c | 8 +- src/channel.c | 698 +- src/charset.c | 24 +- src/cindent.c | 55 +- src/clientserver.c | 302 +- src/clipboard.c | 1234 +- src/cmdexpand.c | 47 +- src/config.h.in | 6 - src/configure.ac | 21 +- src/crypt.c | 40 +- src/debugger.c | 50 +- src/dict.c | 25 +- src/diff.c | 326 +- src/digraph.c | 96 +- src/dosinst.c | 4 +- src/dosinst.h | 12 +- src/drawline.c | 183 +- src/drawscreen.c | 465 +- src/edit.c | 28 +- src/errors.h | 51 +- src/eval.c | 215 +- src/evalbuffer.c | 39 +- src/evalfunc.c | 520 +- src/evalvars.c | 52 +- src/evalwindow.c | 117 +- src/ex_cmds.c | 57 +- src/ex_cmds.h | 38 +- src/ex_cmds2.c | 22 +- src/ex_docmd.c | 137 +- src/ex_eval.c | 40 +- src/ex_getln.c | 144 +- src/feature.h | 18 +- src/fileio.c | 230 +- src/filepath.c | 53 +- src/findfile.c | 58 +- src/float.c | 4 +- src/fold.c | 90 +- src/fuzzy.c | 3 +- src/gc.c | 3 + src/getchar.c | 96 +- src/globals.h | 247 +- src/gui.c | 77 +- src/gui.h | 6 + src/gui_beval.c | 194 +- src/gui_dwrite.cpp | 112 +- src/gui_gtk.c | 89 +- src/gui_gtk_f.h | 22 +- src/gui_gtk_x11.c | 176 +- src/gui_motif.c | 186 +- src/gui_photon.c | 20 +- src/gui_w32.c | 164 +- src/gui_x11.c | 26 +- src/gui_xim.c | 104 +- src/hardcopy.c | 158 +- src/help.c | 14 +- src/highlight.c | 772 +- src/if_cscope.c | 203 +- src/if_lua.c | 421 +- src/if_mzsch.c | 278 +- src/if_py_both.h | 6 +- src/if_ruby.c | 17 +- src/if_xcmdsrv.c | 61 +- src/indent.c | 4 +- src/insexpand.c | 468 +- src/installman.sh | 5 +- src/iscygpty.h | 4 +- src/job.c | 12 +- src/json.c | 85 +- src/keymap.h | 2 + src/libvterm/src/state.c | 2 + src/libvterm/t/14state_encoding.test | 9 + src/list.c | 214 +- src/macros.h | 13 +- src/main.c | 736 +- src/mark.c | 40 +- src/match.c | 17 +- src/mbyte.c | 487 +- src/memline.c | 163 +- src/menu.c | 34 +- src/message.c | 339 +- src/misc1.c | 51 +- src/misc2.c | 48 +- src/mouse.c | 38 +- src/move.c | 64 +- src/netbeans.c | 41 +- src/normal.c | 50 +- src/nv_cmds.h | 68 +- src/ops.c | 26 +- src/option.c | 183 +- src/option.h | 43 +- src/optiondefs.h | 80 +- src/optionstr.c | 523 +- src/os_amiga.c | 26 +- src/os_amiga.h | 2 +- src/os_haiku.h | 4 +- src/os_mac_conv.c | 12 +- src/os_macosx.m | 8 +- src/os_mswin.c | 85 +- src/os_qnx.c | 4 +- src/os_unix.c | 994 +- src/os_unix.h | 26 +- src/os_unixx.h | 16 +- src/os_vms.c | 24 +- src/os_vms_conf.h | 123 +- src/os_win32.c | 211 +- src/os_win32.h | 8 +- src/po/Make_all.mak | 6 + src/po/Makefile | 2 +- src/po/check.vim | 18 +- src/po/de.po | 263 +- src/po/gvim.desktop.in | 2 - src/po/hy.po | 1878 ++- src/po/it.po | 120 +- src/po/ja.euc-jp.po | 594 +- src/po/ja.po | 594 +- src/po/ja.sjis.po | 594 +- src/po/ru.cp1251.po | 104 +- src/po/ru.po | 104 +- src/po/sjiscorr.c | 28 +- src/po/sr.po | 215 +- src/po/sv.po | 13676 +++++++++++----- src/po/ta.po | 10890 ++++++++++++ src/po/tr.po | 348 +- src/po/uk.cp1251.po | 771 +- src/po/uk.po | 771 +- src/po/vim.desktop.in | 2 - src/po/vim.pot | 119 +- src/po/zh_CN.UTF-8.po | 1833 ++- src/po/zh_CN.cp936.po | 1833 ++- src/po/zh_CN.po | 1833 ++- src/popupmenu.c | 7 + src/popupwin.c | 1037 +- src/profiler.c | 88 +- src/proto.h | 6 +- src/proto/buffer.pro | 4 + src/proto/channel.pro | 4 + src/proto/clipboard.pro | 8 +- src/proto/drawscreen.pro | 2 + src/proto/evalfunc.pro | 1 + src/proto/ex_docmd.pro | 2 +- src/proto/gen_prototypes.py | 3 + src/proto/gui_gtk_x11.pro | 4 +- src/proto/gui_w32.pro | 2 + src/proto/highlight.pro | 8 + src/proto/insexpand.pro | 1 - src/proto/message.pro | 2 +- src/proto/move.pro | 2 +- src/proto/ops.pro | 2 + src/proto/option.pro | 1 + src/proto/optionstr.pro | 7 +- src/proto/os_unix.pro | 1 + src/proto/popupwin.pro | 5 + src/proto/screen.pro | 2 +- src/proto/term.pro | 5 + src/proto/terminal.pro | 10 +- src/proto/vim9class.pro | 1 + src/proto/vim9compile.pro | 4 +- src/proto/vim9instr.pro | 2 +- src/proto/window.pro | 8 +- src/pty.c | 32 +- src/quickfix.c | 250 +- src/regexp.h | 3 + src/regexp_bt.c | 33 +- src/regexp_nfa.c | 55 +- src/register.c | 292 +- src/screen.c | 641 +- src/scriptfile.c | 161 +- src/search.c | 64 +- src/session.c | 58 +- src/sha256.c | 24 +- src/sign.c | 2 + src/spell.c | 7 +- src/spell.h | 12 +- src/spellfile.c | 53 +- src/spellsuggest.c | 20 +- src/strings.c | 405 +- src/structs.h | 489 +- src/syntax.c | 4 +- src/tabpanel.c | 246 +- src/tag.c | 89 +- src/term.c | 446 +- src/termdefs.h | 13 +- src/terminal.c | 255 +- src/termlib.c | 4 +- src/testdir/Make_all.mak | 10 +- src/testdir/Make_ming.mak | 6 +- src/testdir/Make_mvc.mak | 12 +- src/testdir/Makefile | 13 +- src/testdir/commondumps.vim | 113 +- ...est_change_wrapped_line_cpo_dollar_01.dump | 10 + ...est_change_wrapped_line_cpo_dollar_02.dump | 10 + ...est_change_wrapped_line_cpo_dollar_03.dump | 10 + ...est_change_wrapped_line_cpo_dollar_04.dump | 10 + ...est_change_wrapped_line_cpo_dollar_05.dump | 10 + ...est_change_wrapped_line_cpo_dollar_06.dump | 10 + ...est_change_wrapped_line_cpo_dollar_07.dump | 10 + ...est_change_wrapped_line_cpo_dollar_08.dump | 10 + ...est_change_wrapped_line_cpo_dollar_09.dump | 10 + ...est_change_wrapped_line_cpo_dollar_10.dump | 10 + ...est_change_wrapped_line_cpo_dollar_11.dump | 10 + ...est_change_wrapped_line_cpo_dollar_12.dump | 10 + ...est_change_wrapped_line_cpo_dollar_13.dump | 10 + ...est_change_wrapped_line_cpo_dollar_14.dump | 10 + ...est_change_wrapped_line_cpo_dollar_15.dump | 10 + src/testdir/dumps/Test_diff_inline_04.dump | 2 +- .../Test_diff_inline_multibuffer_04.dump | 2 +- .../dumps/Test_diff_inline_multiline_02.dump | 6 +- .../dumps/Test_diff_inline_multiline_04.dump | 6 +- .../dumps/Test_diff_inline_word_03.dump | 2 +- .../dumps/Test_diffput_to_empty_buf_01.dump | 20 + .../dumps/Test_diffput_to_empty_buf_02.dump | 20 + .../dumps/Test_diffput_to_empty_buf_03.dump | 20 + .../Test_display_hit_enter_setline_1.dump | 8 + .../Test_display_hit_enter_setline_2.dump | 8 + .../Test_display_hit_enter_setline_3.dump | 8 + .../dumps/Test_display_scroll_setline_1.dump | 15 + .../dumps/Test_display_scroll_setline_2.dump | 15 + .../dumps/Test_display_scroll_setline_3.dump | 15 + .../dumps/Test_display_scroll_setline_4.dump | 15 + .../dumps/Test_display_scroll_setline_5.dump | 15 + .../dumps/Test_display_scroll_setline_6.dump | 15 + src/testdir/dumps/Test_echowindow_10.dump | 8 + src/testdir/dumps/Test_echowindow_11.dump | 8 + ...t_foldtext_and_fillchars_rightleft_01.dump | 5 + ...t_foldtext_and_fillchars_rightleft_02.dump | 5 + .../Test_fuzzy_filenames_compl_autocompl.dump | 10 + .../Test_laststatus_vsplit_row_height2_1.dump | 8 + .../Test_laststatus_vsplit_row_height3_1.dump | 8 + .../Test_laststatus_vsplit_row_height_1.dump | 8 + .../Test_long_formatprg_no_hit_enter_1.dump | 10 + .../Test_long_formatprg_no_hit_enter_2.dump | 10 + .../Test_long_formatprg_no_hit_enter_3.dump | 10 + .../Test_multistatusline_highlight_01.dump | 6 + .../Test_multistatusline_highlight_02.dump | 6 + src/testdir/dumps/Test_osc52_paste_01.dump | 20 + src/testdir/dumps/Test_osc52_paste_02.dump | 20 + src/testdir/dumps/Test_osc52_paste_03.dump | 20 + src/testdir/dumps/Test_osc52_paste_04.dump | 20 + src/testdir/dumps/Test_popup_setbuf_04.vim | 2 + src/testdir/dumps/Test_popup_setbuf_05.vim | 2 + src/testdir/dumps/Test_popup_setbuf_06.vim | 2 + .../dumps/Test_popupwin_conceal_01.dump | 10 + .../dumps/Test_popupwin_conceal_02.dump | 10 + .../dumps/Test_popupwin_conceal_03.dump | 10 + ...Test_popupwin_infopopup_align_item_01.dump | 15 + .../Test_popupwin_opacity_100_blocks_bg.dump | 10 + .../dumps/Test_popupwin_opacity_hl_100.dump | 10 + .../dumps/Test_popupwin_opacity_hl_80.dump | 10 + .../dumps/Test_popupwin_opacity_wide_1.dump | 15 + .../dumps/Test_popupwin_opacity_wide_2.dump | 15 + .../dumps/Test_popupwin_opacity_zero_01.dump | 10 + .../dumps/Test_popupwin_opacity_zero_02.dump | 10 + .../dumps/Test_previewpopup_border_1.dump | 14 + .../dumps/Test_previewpopup_border_2.dump | 14 + .../dumps/Test_previewpopup_border_3.dump | 14 + .../dumps/Test_previewpopup_border_4.dump | 14 + .../dumps/Test_previewpopup_border_5.dump | 14 + .../dumps/Test_previewpopup_border_6.dump | 14 + .../dumps/Test_previewpopup_border_7.dump | 14 + .../Test_previewpopup_border_mouse_1.dump | 14 + .../Test_previewpopup_border_mouse_2.dump | 14 + .../Test_previewpopup_border_mouse_3.dump | 14 + .../Test_previewpopup_border_mouse_4.dump | 14 + .../Test_previewpopup_border_mouse_5.dump | 14 + .../Test_previewpopup_border_mouse_6.dump | 14 + .../Test_previewpopup_border_mouse_7.dump | 14 + .../dumps/Test_previewpopup_shadow_1.dump | 14 + .../dumps/Test_previewpopup_shadow_2.dump | 14 + ...stat_3.dump => Test_searchfoldopen_1.dump} | 0 src/testdir/dumps/Test_searchfoldopen_2.dump | 10 + src/testdir/dumps/Test_searchstat_back_1.dump | 2 +- src/testdir/dumps/Test_searchstat_back_2.dump | 2 +- src/testdir/dumps/Test_smooth_number_7.dump | 2 +- src/testdir/dumps/Test_smooth_number_8.dump | 2 +- src/testdir/dumps/Test_smooth_number_9.dump | 2 +- .../Test_statuslineopt_default_stl_01.dump | 8 + .../Test_statuslineopt_new_split_01.dump | 20 + .../dumps/Test_statuslineopt_sp_foo_01.dump | 20 + .../dumps/Test_statuslineopt_sp_split_01.dump | 15 + .../Test_statuslineopt_wincmd_eq_01.dump | 12 + ...st_statuslineopt_wincmd_underscore_01.dump | 14 + ...ump => Test_tabpanel_cmdline_compl_0.dump} | 4 +- .../dumps/Test_tabpanel_cmdline_compl_1.dump | 10 + .../dumps/Test_tabpanel_commandline_1.dump | 10 - ...abpanel_dont_overflow_into_tabpanel_0.dump | 2 +- .../dumps/Test_tabpanel_drawing_01.dump | 2 +- .../dumps/Test_tabpanel_drawing_02.dump | 2 +- .../dumps/Test_tabpanel_drawing_03.dump | 2 +- .../dumps/Test_tabpanel_drawing_04.dump | 2 +- .../dumps/Test_tabpanel_drawing_05.dump | 2 +- .../dumps/Test_tabpanel_drawing_06.dump | 2 +- .../dumps/Test_tabpanel_drawing_07.dump | 2 +- .../dumps/Test_tabpanel_drawing_08.dump | 2 +- .../dumps/Test_tabpanel_drawing_2_0.dump | 2 +- .../dumps/Test_tabpanel_drawing_2_1.dump | 2 +- .../Test_tabpanel_drawing_fill_tailing_0.dump | 2 +- .../dumps/Test_tabpanel_drawing_pum_0.dump | 2 +- .../dumps/Test_tabpanel_drawing_pum_1.dump | 2 +- .../dumps/Test_tabpanel_drawing_pum_2.dump | 2 +- .../Test_tabpanel_drawing_scrolling_0.dump | 2 +- .../Test_tabpanel_drawing_scrolling_1.dump | 2 +- .../Test_tabpanel_drawing_scrolling_2.dump | 2 +- .../Test_tabpanel_drawing_scrolling_3.dump | 2 +- ...Test_tabpanel_drawing_with_popupwin_1.dump | 2 +- ...Test_tabpanel_drawing_with_popupwin_2.dump | 2 +- .../dumps/Test_tabpanel_equalalways_0.dump | 2 +- .../dumps/Test_tabpanel_equalalways_1.dump | 2 +- .../dumps/Test_tabpanel_equalalways_2.dump | 2 +- .../dumps/Test_tabpanel_equalalways_3.dump | 2 +- ...bline_0.dump => Test_tabpanel_eval_0.dump} | 2 +- ...bline_1.dump => Test_tabpanel_eval_1.dump} | 2 +- ...Test_tabpanel_eval_with_linebreaks_0.dump} | 2 +- ...Test_tabpanel_eval_with_linebreaks_1.dump} | 2 +- .../dumps/Test_tabpanel_many_tabpages_0.dump | 2 +- .../dumps/Test_tabpanel_many_tabpages_1.dump | 2 +- .../dumps/Test_tabpanel_many_tabpages_2.dump | 2 +- .../dumps/Test_tabpanel_many_tabpages_3.dump | 2 +- .../dumps/Test_tabpanel_many_tabpages_4.dump | 6 +- ...ine_0.dump => Test_tabpanel_noeval_0.dump} | 2 +- ...ine_1.dump => Test_tabpanel_noeval_1.dump} | 2 +- src/testdir/dumps/Test_tabpanel_only_0.dump | 2 +- src/testdir/dumps/Test_tabpanel_only_1.dump | 2 +- .../dumps/Test_tabpanel_quitall_0.dump | 2 +- src/testdir/dumps/Test_tabpanel_ruler_0.dump | 2 +- .../dumps/Test_tabpanel_stpl_eq_0_2.dump | 2 +- .../dumps/Test_tabpanel_stpl_eq_1_1.dump | 2 +- .../dumps/Test_tabpanel_stpl_eq_1_2.dump | 2 +- .../dumps/Test_tabpanel_stpl_eq_1_3.dump | 2 +- .../dumps/Test_tabpanel_stpl_eq_1_4.dump | 2 +- ...st_tabpanel_vert_is_multibytes_left_0.dump | 2 +- ...st_tabpanel_vert_is_multibytes_left_1.dump | 2 +- ...st_tabpanel_vert_is_multibytes_left_2.dump | 2 +- src/testdir/dumps/Test_tabpanel_visual_0.dump | 4 +- src/testdir/dumps/Test_tabpanel_visual_1.dump | 4 +- src/testdir/dumps/Test_tabpanel_visual_2.dump | 4 +- .../Test_tabpanel_with_cmdline_no_pum_0.dump | 2 +- .../Test_tabpanel_with_cmdline_no_pum_1.dump | 4 +- .../Test_tabpanel_with_cmdline_pum_0.dump | 2 +- .../Test_tabpanel_with_cmdline_pum_1.dump | 10 +- .../Test_tabpanel_with_msg_scrolled_0.dump | 2 +- .../Test_tabpanel_with_msg_scrolled_1.dump | 2 +- ...dump => Test_tabpanel_with_tabline_0.dump} | 4 +- .../dumps/Test_tabpanel_with_vsplit_0.dump | 2 +- .../dumps/Test_tabpanel_with_vsplit_1.dump | 2 +- .../dumps/Test_tabpanel_with_vsplit_2.dump | 2 +- .../dumps/Test_tabpanel_with_vsplit_3.dump | 2 +- .../dumps/Test_tabpanel_with_vsplit_4.dump | 2 +- .../dumps/Test_tabpanel_with_vsplit_5.dump | 2 +- .../Test_wildtrigger_update_screen_4.dump | 10 + src/testdir/dumps/Test_winhighlight_1.dump | 8 + src/testdir/dumps/Test_winhighlight_10.dump | 8 + src/testdir/dumps/Test_winhighlight_11.dump | 8 + src/testdir/dumps/Test_winhighlight_12.dump | 8 + src/testdir/dumps/Test_winhighlight_13.dump | 8 + src/testdir/dumps/Test_winhighlight_13a.dump | 8 + src/testdir/dumps/Test_winhighlight_14.dump | 8 + src/testdir/dumps/Test_winhighlight_15.dump | 8 + src/testdir/dumps/Test_winhighlight_2.dump | 8 + src/testdir/dumps/Test_winhighlight_3.dump | 8 + src/testdir/dumps/Test_winhighlight_6.dump | 8 + src/testdir/dumps/Test_winhighlight_7.dump | 8 + src/testdir/dumps/Test_winhighlight_8.dump | 8 + src/testdir/dumps/Test_winhighlight_9.dump | 8 + .../dumps/Test_winhighlight_copy_1.dump | 20 + .../dumps/Test_winhighlight_hlsearch_1.dump | 20 + .../dumps/Test_winhighlight_hlsearch_2.dump | 20 + .../dumps/Test_winhighlight_occasion_1.dump | 20 + .../dumps/Test_winhighlight_popupwin_1.dump | 20 + .../dumps/Test_winhighlight_popupwin_2.dump | 20 + .../dumps/Test_winhighlight_syntax_1.dump | 8 + .../dumps/Test_winhighlight_syntax_2.dump | 8 + .../dumps/Test_winhighlight_syntax_3.dump | 8 + .../dumps/Test_winhighlight_term_1.dump | 20 + .../dumps/Test_winhighlight_term_2.dump | 20 + .../dumps/Test_winhighlight_term_3.dump | 20 + src/testdir/samples/Test_tohtml_basic.c.html | 2 +- .../samples/Test_tohtml_basic_no_css.c.html | 2 +- src/testdir/samples/buffer-test.txt | 1 + src/testdir/samples/crypt_utf8_test.txt | Bin 0 -> 29155 bytes src/testdir/samples/recover-crash1.swp | Bin 0 -> 9765 bytes src/testdir/samples/recover-crash2.swp | Bin 0 -> 9682 bytes .../samples/terminal_max_combining_chars.txt | 80 + src/testdir/samples/uncrypt_utf8_test.txt | 176 + src/testdir/test_arglist.vim | 32 +- src/testdir/test_assert.vim | 13 + src/testdir/test_autocmd.vim | 334 +- src/testdir/test_balloon.vim | 5 +- src/testdir/test_blob.vim | 62 + src/testdir/test_buffer.vim | 287 +- src/testdir/test_bufwintabinfo.vim | 23 + src/testdir/test_cd.vim | 79 +- src/testdir/test_channel.vim | 183 +- src/testdir/test_channel_dap.py | 135 + src/testdir/test_cindent.vim | 72 +- src/testdir/test_clientserver.vim | 14 +- src/testdir/test_clipmethod.vim | 58 +- src/testdir/test_cmdline.vim | 322 +- src/testdir/test_codestyle.vim | 2 + src/testdir/test_crash.vim | 25 +- src/testdir/test_crypt.vim | 32 + src/testdir/test_debugger.vim | 55 +- src/testdir/test_diffmode.vim | 64 +- src/testdir/test_display.vim | 120 + src/testdir/test_edit.vim | 105 +- src/testdir/test_eval_stuff.vim | 564 + src/testdir/test_ex_mode.vim | 8 +- src/testdir/test_excmd.vim | 11 +- src/testdir/test_exit.vim | 14 + src/testdir/test_expand.vim | 2 +- src/testdir/test_expr.vim | 4 +- src/testdir/test_filechanged.vim | 23 + src/testdir/test_filetype.vim | 188 +- src/testdir/test_fold.vim | 52 +- src/testdir/test_format.vim | 2 + src/testdir/test_functions.vim | 46 +- src/testdir/test_global.vim | 4 +- src/testdir/test_gui.vim | 88 +- src/testdir/test_help.vim | 61 + src/testdir/test_highlight.vim | 324 + src/testdir/test_input.vim | 50 + src/testdir/test_ins_complete.vim | 417 +- src/testdir/test_listchars.vim | 175 +- src/testdir/test_listdict.vim | 471 + src/testdir/test_listener.vim | 145 +- src/testdir/test_map_functions.vim | 59 +- src/testdir/test_marks.vim | 4 +- src/testdir/test_matchadd_conceal.vim | 23 + src/testdir/test_matchfuzzy.vim | 12 +- src/testdir/test_menu.vim | 10 +- src/testdir/test_messages.vim | 57 + src/testdir/test_modeless.vim | 13 + src/testdir/test_netbeans.py | 4 +- src/testdir/test_netbeans.vim | 57 + src/testdir/test_normal.vim | 45 +- src/testdir/test_options.vim | 61 +- src/testdir/test_perl.vim | 11 +- src/testdir/test_plugin_comment.vim | 4 +- src/testdir/test_plugin_helpcurwin.vim | 13 + src/testdir/test_plugin_netrw.vim | 532 +- src/testdir/test_plugin_osc52.vim | 96 + src/testdir/test_plugin_tar.vim | 21 + src/testdir/test_plugin_termdebug.vim | 92 +- src/testdir/test_popup.vim | 3 +- src/testdir/test_popupwin.vim | 349 + src/testdir/test_prompt_buffer.vim | 42 +- src/testdir/test_python3.vim | 23 +- src/testdir/test_quickfix.vim | 48 + src/testdir/test_recover.vim | 78 +- src/testdir/test_regexp_utf8.vim | 18 + src/testdir/test_registers.vim | 41 +- src/testdir/test_remote.vim | 15 + src/testdir/test_restricted.vim | 105 + src/testdir/test_ruby.vim | 4 + src/testdir/test_scroll_opt.vim | 5 +- src/testdir/test_search_stat.vim | 6 +- src/testdir/test_sort.vim | 34 +- src/testdir/test_sound.vim | 5 + src/testdir/test_spell.vim | 14 + src/testdir/test_spell_utf8.vim | 3 +- src/testdir/test_startup.vim | 55 +- src/testdir/test_startup_utf8.vim | 2 + src/testdir/test_statusline.vim | 27 +- src/testdir/test_statuslineopt.vim | 415 + src/testdir/test_system.vim | 70 + src/testdir/test_tabline.vim | 14 + src/testdir/test_tabpanel.vim | 174 +- src/testdir/test_tagfunc.vim | 31 +- src/testdir/test_tagjump.vim | 29 +- src/testdir/test_taglist.vim | 31 + src/testdir/test_termcodes.vim | 204 +- src/testdir/test_terminal.vim | 24 +- src/testdir/test_terminal2.vim | 56 +- src/testdir/test_terminal3.vim | 187 +- src/testdir/test_textformat.vim | 44 +- src/testdir/test_textprop.vim | 63 +- src/testdir/test_trycatch.vim | 26 + src/testdir/test_tuple.vim | 107 + src/testdir/test_undo.vim | 11 + src/testdir/test_unlet.vim | 12 + src/testdir/test_usercommands.vim | 23 + src/testdir/test_vim9_assign.vim | 77 +- src/testdir/test_vim9_builtin.vim | 59 +- src/testdir/test_vim9_class.vim | 6491 +++----- src/testdir/test_vim9_disassemble.vim | 29 +- src/testdir/test_vim9_expr.vim | 288 +- src/testdir/test_vim9_func.vim | 26 + src/testdir/test_vim9_generics.vim | 14 +- src/testdir/test_vim9_interface.vim | 1459 ++ src/testdir/test_vim9_script.vim | 66 + src/testdir/test_vimscript.vim | 19 +- src/testdir/test_virtualedit.vim | 25 +- src/testdir/test_visual.vim | 116 + src/testdir/test_wayland.vim | 13 + src/testdir/test_window_cmd.vim | 136 +- src/testdir/test_xxd.vim | 47 +- src/testdir/util/check.vim | 27 +- src/testdir/util/gen_opt_test.vim | 44 +- src/testdir/util/screendump.vim | 1 - src/testdir/util/shared.vim | 26 + src/testdir/util/socketserver.vim | 17 + src/testing.c | 181 +- src/textformat.c | 22 +- src/textprop.c | 31 +- src/time.c | 44 +- src/tuple.c | 42 +- src/typval.c | 17 +- src/ui.c | 94 +- src/undo.c | 175 +- src/usercmd.c | 36 +- src/userfunc.c | 9 +- src/version.c | 3882 +---- src/version.h | 16 +- src/vim.h | 146 +- src/vim.manifest | 2 +- src/vim9class.c | 332 +- src/vim9cmds.c | 29 +- src/vim9compile.c | 77 +- src/vim9execute.c | 108 +- src/vim9expr.c | 37 +- src/vim9generics.c | 2 +- src/vim9instr.c | 59 +- src/vim9type.c | 82 +- src/viminfo.c | 17 +- src/wayland.c | 121 +- src/wayland.h | 14 +- src/window.c | 669 +- src/xdiff/README.txt | 5 +- src/xdiff/xdiff.h | 2 +- src/xdiff/xdiffi.c | 118 +- src/xdiff/xdiffi.h | 11 +- src/xdiff/xemit.c | 55 +- src/xdiff/xhistogram.c | 26 +- src/xdiff/xinclude.h | 3 + src/xdiff/xpatience.c | 25 +- src/xdiff/xprepare.c | 345 +- src/xdiff/xtypes.h | 9 +- src/xdiff/xutils.c | 86 +- src/xdiff/xutils.h | 10 +- src/xxd/xxd.c | 67 +- 1559 files changed, 98735 insertions(+), 33589 deletions(-) delete mode 100644 debian/changelog.upstream delete mode 100644 debian/patches/Set-NoDisplay-true-for-vim-desktop.patch create mode 100644 lang/LICENSE.sv.txt create mode 100644 lang/LICENSE.zh_cn.txt create mode 100644 lang/README.sv.txt create mode 100644 lang/README.zh_cn.txt create mode 100644 nsis/lang/swedish.nsi create mode 100644 runtime/colors/catppuccin.vim create mode 100644 runtime/compiler/biome.vim create mode 100644 runtime/compiler/cabal.vim create mode 100644 runtime/compiler/pyright.vim create mode 100644 runtime/compiler/tombi.vim create mode 100644 runtime/compiler/ty.vim create mode 100644 runtime/doc/evim-sv.1 create mode 100644 runtime/doc/evim-sv.UTF-8.1 create mode 100644 runtime/doc/vim-sv.1 create mode 100644 runtime/doc/vim-sv.UTF-8.1 create mode 100644 runtime/doc/vimdiff-sv.1 create mode 100644 runtime/doc/vimdiff-sv.UTF-8.1 create mode 100644 runtime/doc/vimtutor-sv.1 create mode 100644 runtime/doc/vimtutor-sv.UTF-8.1 create mode 100644 runtime/doc/xxd-sv.1 create mode 100644 runtime/doc/xxd-sv.UTF-8.1 create mode 100644 runtime/ftplugin/bicep-params.vim create mode 100644 runtime/ftplugin/bicep.vim create mode 100644 runtime/ftplugin/bpftrace.vim create mode 100644 runtime/ftplugin/env.vim create mode 100644 runtime/ftplugin/kitty.vim create mode 100644 runtime/ftplugin/leex.vim create mode 100644 runtime/ftplugin/nickel.vim mode change 100755 => 100644 runtime/ftplugin/plsql.vim create mode 100644 runtime/ftplugin/skhd.vim create mode 100644 runtime/ftplugin/sml.vim create mode 100644 runtime/ftplugin/xkb.vim create mode 100644 runtime/ftplugin/yara.vim create mode 100644 runtime/indent/bpftrace.vim create mode 100644 runtime/indent/handlebars.vim create mode 100644 runtime/indent/lf.vim create mode 100644 runtime/indent/testdir/rust.in create mode 100644 runtime/indent/testdir/rust.ok mode change 100755 => 100644 runtime/pack/dist/opt/editorconfig/LICENSE.PSF create mode 100644 runtime/pack/dist/opt/helpcurwin/autoload/helpcurwin.vim create mode 100644 runtime/pack/dist/opt/helpcurwin/doc/helpcurwin.txt create mode 100644 runtime/pack/dist/opt/helpcurwin/doc/tags create mode 100644 runtime/pack/dist/opt/helpcurwin/plugin/helpcurwin.vim create mode 100644 runtime/pack/dist/opt/osc52/autoload/osc52.vim create mode 100644 runtime/pack/dist/opt/osc52/doc/osc52.txt create mode 100644 runtime/pack/dist/opt/osc52/doc/tags create mode 100644 runtime/pack/dist/opt/osc52/plugin/osc52.vim create mode 100644 runtime/syntax/bpftrace.vim create mode 100644 runtime/syntax/env.vim create mode 100644 runtime/syntax/glimmer.vim create mode 100644 runtime/syntax/handlebars.vim create mode 100644 runtime/syntax/leex.vim delete mode 100644 runtime/syntax/shared/context-data-context.vim delete mode 100644 runtime/syntax/shared/context-data-interfaces.vim delete mode 100644 runtime/syntax/shared/context-data-metafun.vim delete mode 100644 runtime/syntax/shared/context-data-tex.vim create mode 100644 runtime/syntax/skhd.vim create mode 100644 runtime/syntax/testdir/dumps/c_noreturn_00.dump create mode 100644 runtime/syntax/testdir/dumps/c_noreturn_01.dump create mode 100644 runtime/syntax/testdir/dumps/cpp_noreturn_00.dump create mode 100644 runtime/syntax/testdir/dumps/cpp_noreturn_01.dump create mode 100644 runtime/syntax/testdir/dumps/cpp_numbers_00.dump create mode 100644 runtime/syntax/testdir/dumps/cpp_numbers_01.dump create mode 100644 runtime/syntax/testdir/dumps/csh_00.dump create mode 100644 runtime/syntax/testdir/dumps/css_1_00.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_00.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_01.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_02.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_03.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_04.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_05.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_06.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_07.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_08.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_09.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_10.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_11.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_12.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_13.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_14.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_15.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_16.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_17.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_18.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_19.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_20.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_21.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_22.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_23.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_24.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_25.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_26.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_27.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_28.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_29.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_30.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_31.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_32.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_33.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_34.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_35.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_36.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_37.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_38.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_39.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_40.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_41.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_42.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_43.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_44.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_45.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_46.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_47.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_48.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_49.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_50.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_51.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_52.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_53.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_54.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_55.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_56.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_57.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_58.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_59.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_60.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_61.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_62.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_63.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_64.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_65.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_66.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_67.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_68.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_69.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_70.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_71.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_72.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_73.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_74.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_75.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_76.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_77.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_78.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_79.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_80.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_81.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_82.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_83.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_84.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_85.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_86.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_87.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_88.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_89.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_90.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_91.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_92.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_multiline_commands_00.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_multiline_commands_01.dump create mode 100644 runtime/syntax/testdir/dumps/gdb_multiline_commands_02.dump create mode 100644 runtime/syntax/testdir/dumps/haskell_00.dump create mode 100644 runtime/syntax/testdir/dumps/help_digraph_table_00.dump create mode 100644 runtime/syntax/testdir/dumps/help_digraph_table_01.dump create mode 100644 runtime/syntax/testdir/dumps/help_digraph_table_02.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent2_signature_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent4_signature_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_08.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_indent8_signature_07.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_06.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_05.dump create mode 100644 runtime/syntax/testdir/dumps/java_methods_style_signature_06.dump create mode 100644 runtime/syntax/testdir/dumps/leex_00.dump create mode 100644 runtime/syntax/testdir/dumps/leex_01.dump create mode 100644 runtime/syntax/testdir/dumps/make_01_00.dump create mode 100644 runtime/syntax/testdir/dumps/po_00.dump create mode 100644 runtime/syntax/testdir/dumps/po_01.dump create mode 100644 runtime/syntax/testdir/dumps/po_02.dump create mode 100644 runtime/syntax/testdir/dumps/po_03.dump create mode 100644 runtime/syntax/testdir/dumps/python_constants_builtin_default_00.dump create mode 100644 runtime/syntax/testdir/dumps/python_constants_builtin_highlight_00.dump create mode 100644 runtime/syntax/testdir/dumps/python_constants_keyword_default_00.dump create mode 100644 runtime/syntax/testdir/dumps/python_constants_keyword_highlight_00.dump create mode 100644 runtime/syntax/testdir/dumps/python_numbers_00.dump create mode 100644 runtime/syntax/testdir/dumps/python_numbers_01.dump create mode 100644 runtime/syntax/testdir/dumps/python_numbers_02.dump create mode 100644 runtime/syntax/testdir/dumps/python_numbers_03.dump create mode 100644 runtime/syntax/testdir/dumps/python_numbers_04.dump create mode 100644 runtime/syntax/testdir/dumps/python_strings_bytes_13.dump create mode 100644 runtime/syntax/testdir/dumps/python_strings_bytes_14.dump create mode 100644 runtime/syntax/testdir/dumps/python_strings_bytes_15.dump create mode 100644 runtime/syntax/testdir/dumps/sed_00.dump create mode 100644 runtime/syntax/testdir/dumps/sed_01.dump create mode 100644 runtime/syntax/testdir/dumps/sed_02.dump create mode 100644 runtime/syntax/testdir/dumps/sed_03.dump create mode 100644 runtime/syntax/testdir/dumps/sh_10_00.dump create mode 100644 runtime/syntax/testdir/dumps/sh_15_00.dump create mode 100644 runtime/syntax/testdir/dumps/sh_generic_10.dump create mode 100644 runtime/syntax/testdir/dumps/sh_generic_11.dump create mode 100644 runtime/syntax/testdir/dumps/sh_generic_12.dump create mode 100644 runtime/syntax/testdir/dumps/sh_generic_13.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh2020_10.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh2020_11.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh2020_12.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh2020_13.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh88_10.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh88_11.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh88_12.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh88_13.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93_generic_10.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93_generic_11.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93_generic_12.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93_generic_13.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93u_10.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93u_11.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93u_12.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93u_13.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93v_10.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93v_11.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93v_12.dump create mode 100644 runtime/syntax/testdir/dumps/sh_ksh93v_13.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_10.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_11.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_12.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_13.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_00.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_01.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_02.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_03.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_04.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_05.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_06.dump create mode 100644 runtime/syntax/testdir/dumps/sh_mksh_gibberish_07.dump create mode 100644 runtime/syntax/testdir/dumps/skhdrc_00.dump create mode 100644 runtime/syntax/testdir/dumps/skhdrc_01.dump create mode 100644 runtime/syntax/testdir/dumps/skhdrc_02.dump create mode 100644 runtime/syntax/testdir/dumps/skhdrc_03.dump create mode 100644 runtime/syntax/testdir/dumps/skhdrc_04.dump create mode 100644 runtime/syntax/testdir/dumps/skhdrc_05.dump create mode 100644 runtime/syntax/testdir/dumps/sml_00.dump create mode 100644 runtime/syntax/testdir/dumps/sml_01.dump create mode 100644 runtime/syntax/testdir/dumps/sml_02.dump create mode 100644 runtime/syntax/testdir/dumps/sml_03.dump create mode 100644 runtime/syntax/testdir/dumps/sml_04.dump create mode 100644 runtime/syntax/testdir/dumps/sudoers_Defaults_00.dump create mode 100644 runtime/syntax/testdir/dumps/sudoers_Defaults_01.dump create mode 100644 runtime/syntax/testdir/dumps/sudoers_Defaults_02.dump create mode 100644 runtime/syntax/testdir/dumps/sudoers_user-spec_00.dump create mode 100644 runtime/syntax/testdir/dumps/sudoers_user-spec_01.dump create mode 100644 runtime/syntax/testdir/dumps/sudoers_user-spec_02.dump create mode 100644 runtime/syntax/testdir/dumps/sudoers_user-spec_03.dump create mode 100644 runtime/syntax/testdir/dumps/tcsh_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_types_example_object_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_types_example_object_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_types_object_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_types_object_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_variables_14.dump create mode 100644 runtime/syntax/testdir/dumps/vim9_variables_15.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_augroup_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_breakpoint_commands_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_breakpoint_commands_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_breakpoint_commands_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_breakpoint_commands_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_breakpoint_commands_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_breakpoint_commands_05.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_cd_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_cd_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_cd_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_cd_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_cd_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_cd_05.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_cd_06.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_debug_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_do_commands_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_do_commands_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_do_commands_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_do_commands_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_help_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_help_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_help_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_help_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_history_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_history_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_history_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_history_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_history_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_history_05.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_03.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_04.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_05.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_06.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_07.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_08.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_language_09.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_prompt_commands_00.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_prompt_commands_01.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_prompt_commands_02.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_16.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_17.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_18.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_19.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_20.dump create mode 100644 runtime/syntax/testdir/dumps/vim_ex_syntax_21.dump create mode 100644 runtime/syntax/testdir/input/c_noreturn.c create mode 100644 runtime/syntax/testdir/input/cpp_noreturn.cpp create mode 100644 runtime/syntax/testdir/input/cpp_numbers.cpp create mode 100644 runtime/syntax/testdir/input/csh.csh create mode 100644 runtime/syntax/testdir/input/css_1.css create mode 100644 runtime/syntax/testdir/input/gdb.gdb create mode 100644 runtime/syntax/testdir/input/gdb_multiline_commands.gdb create mode 100644 runtime/syntax/testdir/input/haskell.hs create mode 100644 runtime/syntax/testdir/input/leex.xrl create mode 100644 runtime/syntax/testdir/input/make_01.mak create mode 100644 runtime/syntax/testdir/input/po.po create mode 100644 runtime/syntax/testdir/input/python_constants_builtin_default.py create mode 100644 runtime/syntax/testdir/input/python_constants_builtin_highlight.py create mode 100644 runtime/syntax/testdir/input/python_constants_keyword_default.py create mode 100644 runtime/syntax/testdir/input/python_constants_keyword_highlight.py create mode 100644 runtime/syntax/testdir/input/sed.sed create mode 100644 runtime/syntax/testdir/input/sh_10.sh create mode 100644 runtime/syntax/testdir/input/sh_15.sh create mode 100644 runtime/syntax/testdir/input/sh_mksh_gibberish.ksh create mode 100644 runtime/syntax/testdir/input/skhdrc.skhdrc create mode 100644 runtime/syntax/testdir/input/sml.sml create mode 100644 runtime/syntax/testdir/input/sudoers_Defaults.sudoers create mode 100644 runtime/syntax/testdir/input/sudoers_user-spec.sudoers create mode 100644 runtime/syntax/testdir/input/tcsh.tcsh create mode 100644 runtime/syntax/testdir/input/vim9_types_example_object.vim create mode 100644 runtime/syntax/testdir/input/vim9_types_object.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_breakpoint_commands.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_cd.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_debug.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_do_commands.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_help.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_history.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_language.vim create mode 100644 runtime/syntax/testdir/input/vim_ex_prompt_commands.vim create mode 100644 runtime/tools/preproc_indent.vim create mode 100644 runtime/tutor/README.sv.txt create mode 100644 runtime/tutor/sv/vim-01-beginner.tutor create mode 100644 runtime/tutor/sv/vim-01-beginner.tutor.json create mode 100644 runtime/tutor/sv/vim-02-beginner.tutor create mode 100644 runtime/tutor/sv/vim-02-beginner.tutor.json create mode 100644 runtime/tutor/tutor2.es create mode 100644 runtime/tutor/tutor2.ja create mode 100644 runtime/tutor/tutor2.sv create mode 100644 runtime/tutor/zh/vim-01-beginner.tutor create mode 100644 runtime/tutor/zh/vim-01-beginner.tutor.json create mode 100644 runtime/vim16x16_png.h create mode 100644 runtime/vim32x32_png.h create mode 100644 runtime/vim48x48_png.h create mode 100644 runtime/xdg.vim mode change 100755 => 100644 src/po/check.vim mode change 100755 => 100644 src/po/it.po create mode 100644 src/po/ta.po create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_01.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_02.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_03.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_04.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_05.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_06.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_07.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_08.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_09.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_10.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_11.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_12.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_13.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_14.dump create mode 100644 src/testdir/dumps/Test_change_wrapped_line_cpo_dollar_15.dump create mode 100644 src/testdir/dumps/Test_diffput_to_empty_buf_01.dump create mode 100644 src/testdir/dumps/Test_diffput_to_empty_buf_02.dump create mode 100644 src/testdir/dumps/Test_diffput_to_empty_buf_03.dump create mode 100644 src/testdir/dumps/Test_display_hit_enter_setline_1.dump create mode 100644 src/testdir/dumps/Test_display_hit_enter_setline_2.dump create mode 100644 src/testdir/dumps/Test_display_hit_enter_setline_3.dump create mode 100644 src/testdir/dumps/Test_display_scroll_setline_1.dump create mode 100644 src/testdir/dumps/Test_display_scroll_setline_2.dump create mode 100644 src/testdir/dumps/Test_display_scroll_setline_3.dump create mode 100644 src/testdir/dumps/Test_display_scroll_setline_4.dump create mode 100644 src/testdir/dumps/Test_display_scroll_setline_5.dump create mode 100644 src/testdir/dumps/Test_display_scroll_setline_6.dump create mode 100644 src/testdir/dumps/Test_echowindow_10.dump create mode 100644 src/testdir/dumps/Test_echowindow_11.dump create mode 100644 src/testdir/dumps/Test_foldtext_and_fillchars_rightleft_01.dump create mode 100644 src/testdir/dumps/Test_foldtext_and_fillchars_rightleft_02.dump create mode 100644 src/testdir/dumps/Test_fuzzy_filenames_compl_autocompl.dump create mode 100644 src/testdir/dumps/Test_laststatus_vsplit_row_height2_1.dump create mode 100644 src/testdir/dumps/Test_laststatus_vsplit_row_height3_1.dump create mode 100644 src/testdir/dumps/Test_laststatus_vsplit_row_height_1.dump create mode 100644 src/testdir/dumps/Test_long_formatprg_no_hit_enter_1.dump create mode 100644 src/testdir/dumps/Test_long_formatprg_no_hit_enter_2.dump create mode 100644 src/testdir/dumps/Test_long_formatprg_no_hit_enter_3.dump create mode 100644 src/testdir/dumps/Test_multistatusline_highlight_01.dump create mode 100644 src/testdir/dumps/Test_multistatusline_highlight_02.dump create mode 100644 src/testdir/dumps/Test_osc52_paste_01.dump create mode 100644 src/testdir/dumps/Test_osc52_paste_02.dump create mode 100644 src/testdir/dumps/Test_osc52_paste_03.dump create mode 100644 src/testdir/dumps/Test_osc52_paste_04.dump create mode 100644 src/testdir/dumps/Test_popupwin_conceal_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_conceal_02.dump create mode 100644 src/testdir/dumps/Test_popupwin_conceal_03.dump create mode 100644 src/testdir/dumps/Test_popupwin_infopopup_align_item_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_opacity_100_blocks_bg.dump create mode 100644 src/testdir/dumps/Test_popupwin_opacity_hl_100.dump create mode 100644 src/testdir/dumps/Test_popupwin_opacity_hl_80.dump create mode 100644 src/testdir/dumps/Test_popupwin_opacity_wide_1.dump create mode 100644 src/testdir/dumps/Test_popupwin_opacity_wide_2.dump create mode 100644 src/testdir/dumps/Test_popupwin_opacity_zero_01.dump create mode 100644 src/testdir/dumps/Test_popupwin_opacity_zero_02.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_1.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_2.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_3.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_4.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_5.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_6.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_7.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_mouse_1.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_mouse_2.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_mouse_3.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_mouse_4.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_mouse_5.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_mouse_6.dump create mode 100644 src/testdir/dumps/Test_previewpopup_border_mouse_7.dump create mode 100644 src/testdir/dumps/Test_previewpopup_shadow_1.dump create mode 100644 src/testdir/dumps/Test_previewpopup_shadow_2.dump rename src/testdir/dumps/{Test_searchstat_3.dump => Test_searchfoldopen_1.dump} (100%) create mode 100644 src/testdir/dumps/Test_searchfoldopen_2.dump create mode 100644 src/testdir/dumps/Test_statuslineopt_default_stl_01.dump create mode 100644 src/testdir/dumps/Test_statuslineopt_new_split_01.dump create mode 100644 src/testdir/dumps/Test_statuslineopt_sp_foo_01.dump create mode 100644 src/testdir/dumps/Test_statuslineopt_sp_split_01.dump create mode 100644 src/testdir/dumps/Test_statuslineopt_wincmd_eq_01.dump create mode 100644 src/testdir/dumps/Test_statuslineopt_wincmd_underscore_01.dump rename src/testdir/dumps/{Test_tabpanel_commandline_0.dump => Test_tabpanel_cmdline_compl_0.dump} (65%) create mode 100644 src/testdir/dumps/Test_tabpanel_cmdline_compl_1.dump delete mode 100644 src/testdir/dumps/Test_tabpanel_commandline_1.dump rename src/testdir/dumps/{Test_tabpanel_eval_tabpanel_statusline_tabline_0.dump => Test_tabpanel_eval_0.dump} (91%) rename src/testdir/dumps/{Test_tabpanel_eval_tabpanel_statusline_tabline_1.dump => Test_tabpanel_eval_1.dump} (85%) rename src/testdir/dumps/{Test_tabpanel_eval_tabpanel_with_linebreaks_0.dump => Test_tabpanel_eval_with_linebreaks_0.dump} (93%) rename src/testdir/dumps/{Test_tabpanel_eval_tabpanel_with_linebreaks_1.dump => Test_tabpanel_eval_with_linebreaks_1.dump} (88%) rename src/testdir/dumps/{Test_tabpanel_noeval_tabpanel_statusline_tabline_0.dump => Test_tabpanel_noeval_0.dump} (91%) rename src/testdir/dumps/{Test_tabpanel_noeval_tabpanel_statusline_tabline_1.dump => Test_tabpanel_noeval_1.dump} (85%) rename src/testdir/dumps/{Test_tabpanel_tabline_and_tabpanel_0.dump => Test_tabpanel_with_tabline_0.dump} (80%) create mode 100644 src/testdir/dumps/Test_wildtrigger_update_screen_4.dump create mode 100644 src/testdir/dumps/Test_winhighlight_1.dump create mode 100644 src/testdir/dumps/Test_winhighlight_10.dump create mode 100644 src/testdir/dumps/Test_winhighlight_11.dump create mode 100644 src/testdir/dumps/Test_winhighlight_12.dump create mode 100644 src/testdir/dumps/Test_winhighlight_13.dump create mode 100644 src/testdir/dumps/Test_winhighlight_13a.dump create mode 100644 src/testdir/dumps/Test_winhighlight_14.dump create mode 100644 src/testdir/dumps/Test_winhighlight_15.dump create mode 100644 src/testdir/dumps/Test_winhighlight_2.dump create mode 100644 src/testdir/dumps/Test_winhighlight_3.dump create mode 100644 src/testdir/dumps/Test_winhighlight_6.dump create mode 100644 src/testdir/dumps/Test_winhighlight_7.dump create mode 100644 src/testdir/dumps/Test_winhighlight_8.dump create mode 100644 src/testdir/dumps/Test_winhighlight_9.dump create mode 100644 src/testdir/dumps/Test_winhighlight_copy_1.dump create mode 100644 src/testdir/dumps/Test_winhighlight_hlsearch_1.dump create mode 100644 src/testdir/dumps/Test_winhighlight_hlsearch_2.dump create mode 100644 src/testdir/dumps/Test_winhighlight_occasion_1.dump create mode 100644 src/testdir/dumps/Test_winhighlight_popupwin_1.dump create mode 100644 src/testdir/dumps/Test_winhighlight_popupwin_2.dump create mode 100644 src/testdir/dumps/Test_winhighlight_syntax_1.dump create mode 100644 src/testdir/dumps/Test_winhighlight_syntax_2.dump create mode 100644 src/testdir/dumps/Test_winhighlight_syntax_3.dump create mode 100644 src/testdir/dumps/Test_winhighlight_term_1.dump create mode 100644 src/testdir/dumps/Test_winhighlight_term_2.dump create mode 100644 src/testdir/dumps/Test_winhighlight_term_3.dump create mode 100644 src/testdir/samples/buffer-test.txt create mode 100644 src/testdir/samples/crypt_utf8_test.txt create mode 100644 src/testdir/samples/recover-crash1.swp create mode 100644 src/testdir/samples/recover-crash2.swp create mode 100644 src/testdir/samples/terminal_max_combining_chars.txt create mode 100644 src/testdir/samples/uncrypt_utf8_test.txt create mode 100644 src/testdir/test_channel_dap.py create mode 100644 src/testdir/test_plugin_helpcurwin.vim create mode 100644 src/testdir/test_plugin_osc52.vim create mode 100644 src/testdir/test_statuslineopt.vim create mode 100644 src/testdir/test_vim9_interface.vim create mode 100644 src/testdir/util/socketserver.vim diff --git a/.cirrus.yml b/.cirrus.yml index b8d9c785..a9745141 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -5,12 +5,12 @@ env: freebsd_task: name: FreeBSD matrix: - - name: FreeBSD 14.3 + - name: FreeBSD 15.0 freebsd_instance: - image_family: freebsd-14-3 + image_family: freebsd-15-0-amd64-ufs timeout_in: 20m install_script: - - pkg install -y gettext + - pkg install -y gettext diffutils build_script: - NPROC=$(getconf _NPROCESSORS_ONLN) - ./configure --with-features=${FEATURES} diff --git a/.gitattributes b/.gitattributes index bad1d9ed..8e1788a7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,4 +1,13 @@ -src/testdir/test42.in diff +# The old test .ok files are expected to use LF line endings, even on Windows. +# In src/testdir/Make_mvc.mak and src/testdir/Make_ming.mak, the test result +# files .out are converted to LF line endings before being compared. +# Therefore, if the .ok files' line endings are not specified and are +# converted to CRLF, the comparison between .ok and .out will fail. +src/testdir/test*.ok text eol=lf + +# This ok file contains literal CR LF endings. Should not be touched by git, +# so handle as binary +src/testdir/test21.ok -text # `vim.pot` is updated every time any of the *.c files are modified. And as it # contains line numbers for strings from *.c files, inserting a line into a @@ -24,8 +33,11 @@ src/po/vim.pot -diff src/po/vim.pot diff=ignore_vim_pot # GitHub reacts to the `linguist-generated` attribute, by ignoring marked files -# for the repository's language statistics and hiddning changes in these files +# for the repository's language statistics and hiding changes in these files # by default in diffs. # # https://docs.github.com/en/repositories/working-with-files/managing-files/customizing-how-changed-files-appear-on-github src/po/vim.pot linguist-generated=true +*.dump linguist-generated=true + +runtime/syntax/testdir/input/vim_ex_help.vim -text diff linguist-language=vim linguist-detectable=true diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b37315d0..6b14c623 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,10 +12,10 @@ A pull request has the advantage that it will trigger the Continuous Integration tests, you will be warned of problems (you can ignore the coverage warning, it's noisy). -Please consider adding a test. All new functionality should be tested and bug -fixes should be tested for regressions: the test should fail before the fix and -pass after the fix. Look through recent patches for examples and find help -with ":help testing". The tests are located under "src/testdir". +Please always add a test, if possible. All new functionality should be tested +and bug fixes should be tested for regressions: the test should fail before the +fix and pass after the fix. Look through recent patches for examples and find +help with ":help testing". The tests are located under "src/testdir". Contributions will be distributed with Vim under the Vim license. Providing a change to be included implies that you agree with this and your contribution @@ -46,6 +46,15 @@ When merging PRs into Vim, the current maintainer @chrisbra usually adds missing anybody that explicitly *ACK*s a pull request as a statement that those approvers are happy with that particular change. +## Using AI + +When using AI for contributions, please disclose this. Any AI-generated code +must follow the Vim code style. In particular, [test_codestyle.vim][18] +must not report any failures. Check the CI output for any test failures. + +Ensure that changes are properly tested. Do not submit a single PR that +addresses multiple unrelated issues. + # Reporting issues We use GitHub [issues][17], but that is not a requirement. Writing to the Vim @@ -138,8 +147,9 @@ For the recommended documentation style, please check [helphelp.txt][16]. # I have a question If you have some question on the style guide, please contact the [vim-dev][0] -mailing list. For other questions please use the [Vi Stack Exchange][8] website, the -[vim-use][9] mailing list or make use of the [discussion][10] feature here at github. +mailing list. For other questions you can join [`#vim`][19], use the +[Vi Stack Exchange][8] website, the [vim-use][9] mailing list or make use of the +[discussion][10] feature here at github. [todo list]: https://github.com/vim/vim/blob/master/runtime/doc/todo.txt [0]: http://www.vim.org/maillist.php#vim-dev @@ -160,3 +170,5 @@ mailing list. For other questions please use the [Vi Stack Exchange][8] website, [15]: https://en.wikipedia.org/wiki/Developer_Certificate_of_Origin [16]: https://github.com/vim/vim/blob/master/runtime/doc/helphelp.txt [17]: https://github.com/vim/vim/issues +[18]: https://github.com/vim/vim/blob/master/src/testdir/test_codestyle.vim +[19]: https://web.libera.chat/#vim diff --git a/Filelist b/Filelist index 9ab71cb8..82329c70 100644 --- a/Filelist +++ b/Filelist @@ -27,7 +27,6 @@ SRC_ALL = \ ci/if_feat_check.vim \ ci/lychee.toml \ ci/setup-xvfb.sh \ - ci/setup-sway.sh \ ci/remove_snap.sh \ ci/ddebs.list \ ci/pinned-pkgs \ @@ -214,6 +213,7 @@ SRC_ALL = \ src/testdir/ru_RU/LC_MESSAGES/__PACKAGE__.po \ src/testdir/runtest.vim \ src/testdir/samples/*.html \ + src/testdir/samples/*.swp \ src/testdir/samples/*.txt \ src/testdir/samples/*.vim \ src/testdir/samples/evil.zip \ @@ -224,6 +224,8 @@ SRC_ALL = \ src/testdir/samples/test000 \ src/testdir/samples/test_undo.txt.undo \ src/testdir/samples/testa.zip \ + src/testdir/samples/crypt_utf8_test.txt \ + src/testdir/samples/uncrypt_utf8_test.txt \ src/testdir/sautest/autoload/*.vim \ src/testdir/silent.wav \ src/testdir/test77a.com \ @@ -248,6 +250,7 @@ SRC_ALL = \ src/testdir/util/view_util.vim \ src/testdir/util/vim9.vim \ src/testdir/util/window_manager.vim \ + src/testdir/util/socketserver.vim \ src/testdir/viewdumps.vim \ src/proto.h \ src/protodef.h \ @@ -540,7 +543,6 @@ SRC_UNIX = \ src/wayland.c \ src/wayland.h \ src/which.sh \ - src/gen-wayland-protocols.sh \ src/xxd/Makefile \ # Source files for both MS Windows and Unix-like. @@ -804,6 +806,10 @@ RT_ALL = \ runtime/tutor/en/vim-01-beginner.tutor.json \ runtime/tutor/en/vim-02-beginner.tutor \ runtime/tutor/en/vim-02-beginner.tutor.json \ + runtime/tutor/sv/vim-01-beginner.tutor \ + runtime/tutor/sv/vim-01-beginner.tutor.json \ + runtime/tutor/sv/vim-02-beginner.tutor \ + runtime/tutor/sv/vim-02-beginner.tutor.json \ runtime/tutor/tutor.tutor \ runtime/tutor/tutor.tutor.json \ runtime/tutor/tutor.vim \ @@ -821,7 +827,6 @@ RT_ALL = \ runtime/pack/dist/opt/editorconfig/.editorconfig \ runtime/pack/dist/opt/editorconfig/CONTRIBUTORS \ runtime/pack/dist/opt/editorconfig/LICENSE* \ - runtime/pack/dist/opt/editorconfig/mkzip.sh \ runtime/pack/dist/opt/editorconfig/README.md \ runtime/pack/dist/opt/editorconfig/autoload/*.vim \ runtime/pack/dist/opt/editorconfig/autoload/editorconfig_core/*.vim \ @@ -829,6 +834,10 @@ RT_ALL = \ runtime/pack/dist/opt/editorconfig/doc/editorconfig.txt \ runtime/pack/dist/opt/editorconfig/ftdetect/editorconfig.vim \ runtime/pack/dist/opt/editorconfig/plugin/editorconfig.vim \ + runtime/pack/dist/opt/helpcurwin/autoload/helpcurwin.vim \ + runtime/pack/dist/opt/helpcurwin/doc/helpcurwin.txt \ + runtime/pack/dist/opt/helpcurwin/doc/tags \ + runtime/pack/dist/opt/helpcurwin/plugin/helpcurwin.vim \ runtime/pack/dist/opt/helptoc/autoload/helptoc.vim \ runtime/pack/dist/opt/helptoc/doc/helptoc.txt \ runtime/pack/dist/opt/helptoc/doc/tags \ @@ -852,7 +861,12 @@ RT_ALL = \ runtime/pack/dist/opt/netrw/autoload/netrw_gitignore.vim \ runtime/pack/dist/opt/netrw/doc/netrw.txt \ runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim \ - runtime/pack/dist/opt/netrw/syntax/netrw.vim + runtime/pack/dist/opt/netrw/syntax/netrw.vim \ + runtime/pack/dist/opt/osc52/plugin/osc52.vim \ + runtime/pack/dist/opt/osc52/autoload/osc52.vim \ + runtime/pack/dist/opt/osc52/doc/osc52.txt \ + runtime/pack/dist/opt/osc52/doc/tags \ + runtime/xdg.vim # Runtime files for all distributions without CR/LF translation. RT_ALL_BIN = \ @@ -907,7 +921,6 @@ RT_SCRIPTS = \ runtime/syntax/testdir/input/selftestdir/* \ runtime/syntax/testdir/input/setup/*.* \ runtime/syntax/testdir/dumps/*.dump \ - runtime/syntax/testdir/dumps/*.vim \ runtime/syntax/testdir/tools/* \ runtime/syntax/generator/Makefile \ runtime/syntax/generator/README.md \ @@ -928,12 +941,15 @@ RT_UNIX_DOS_BIN = \ runtime/vim16x16.gif \ runtime/vim16x16.png \ runtime/vim16x16.xpm \ + runtime/vim16x16_png.h \ runtime/vim32x32.gif \ runtime/vim32x32.png \ runtime/vim32x32.xpm \ + runtime/vim32x32_png.h \ runtime/vim48x48.gif \ runtime/vim48x48.png \ runtime/vim48x48.xpm \ + runtime/vim48x48_png.h \ # Runtime not for Unix-like or extra. RT_NO_UNIX = \ @@ -979,8 +995,7 @@ RT_AMI = \ runtime/macros/maze/*.info \ runtime/macros/urm/*.info \ runtime/tools.info \ - runtime/tutor.info \ - runtime/tutor/*.info \ + runtime/tutor.info # Runtime files in extra archive. RT_EXTRA = \ @@ -1095,6 +1110,8 @@ LANG_GEN = \ runtime/doc/*-pl.UTF-8.1 \ runtime/doc/*-ru.1 \ runtime/doc/*-ru.UTF-8.1 \ + runtime/doc/*-sv.1 \ + runtime/doc/*-sv.UTF-8.1 \ runtime/doc/*-tr.1 \ runtime/doc/*-tr.UTF-8.1 \ runtime/lang/README.txt \ @@ -1114,6 +1131,8 @@ LANG_GEN = \ runtime/tutor/sr/vim-01-beginner.tutor.json \ runtime/tutor/sr/vim-02-beginner.tutor \ runtime/tutor/sr/vim-02-beginner.tutor.json \ + runtime/tutor/zh/vim-01-beginner.tutor \ + runtime/tutor/zh/vim-01-beginner.tutor.json \ runtime/tutor/tutor1.?? \ runtime/tutor/tutor1.??_?? \ runtime/tutor/tutor1.bar \ diff --git a/Makefile b/Makefile index c3346134..94fd2446 100644 --- a/Makefile +++ b/Makefile @@ -98,7 +98,7 @@ syntaxtest: # Before creating an archive first delete all backup files, *.orig, etc. MAJOR = 9 -MINOR = 1 +MINOR = 2 # CHECKLIST for creating a new version: # @@ -460,6 +460,7 @@ dosrt_files: dist prepare $(LANG_GEN_BIN) \ | (cd dist/vim/$(VIMRTDIR); tar xf -) -rm $(IN_README_DIR) + mv dist/vim/$(VIMRTDIR)/lang/ dist/vim/$(VIMRTDIR)/readme/ mv dist/vim/$(VIMRTDIR)/runtime/* dist/vim/$(VIMRTDIR) rmdir dist/vim/$(VIMRTDIR)/runtime # Add the message translations. Trick: skip ja.mo/ja.euc-jp.mo and use diff --git a/README.md b/README.md index 30b0bd7b..949fcd7b 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,3 @@ -
- Special thanks for supporting Vim by donating to the ICCF: -
-
- - Warp sponsorship - - -### [Warp, built for coding with multiple AI agents.](https://www.warp.dev/vim) -[Available for MacOS, Linux, & Windows](https://www.warp.dev/vim)
-
-
- # [![Vim The editor](https://github.com/vim/vim/raw/master/runtime/vimlogo.gif)](https://www.vim.org) [![Github Build status](https://github.com/vim/vim/workflows/GitHub%20CI/badge.svg)](https://github.com/vim/vim/actions?query=workflow%3A%22GitHub+CI%22) @@ -25,7 +12,9 @@ If you find a bug or want to discuss the best way to add a new feature, please [open an issue](https://github.com/vim/vim/issues/new/choose). If you have a question or want to discuss the best way to do something with -Vim, you can use [StackExchange](https://vi.stackexchange.com/) +Vim, you can join [`#vim`](https://web.libera.chat/#vim), +[reddit.com/r/vim](https://reddit.com/r/vim), +use [StackExchange](https://vi.stackexchange.com/), or one of the [Maillists](https://www.vim.org/community.php). ## What is Vim? @@ -167,4 +156,4 @@ Most of Vim was created by Bram Moolenaar `` Send any other comments, patches, flowers and suggestions to the vim-dev mailing list: `` -This is `README.md` for version 9.1 of Vim: Vi IMproved. +This is `README.md` for version 9.2 of Vim: Vi IMproved. diff --git a/README.txt b/README.txt index 80ec9e3c..18c3e53b 100644 --- a/README.txt +++ b/README.txt @@ -1,4 +1,4 @@ -README.txt for version 9.1 of Vim: Vi IMproved. +README.txt for version 9.2 of Vim: Vi IMproved. WHAT IS VIM? diff --git a/README_VIM9.md b/README_VIM9.md index c9ce73a2..7442b0bc 100644 --- a/README_VIM9.md +++ b/README_VIM9.md @@ -28,7 +28,7 @@ way: * Local variables are not available in an l: dictionary. * A few more things that slow us down, such as exception handling details. -I Implemented a "proof of concept" and measured the time to run a simple +I implemented a "proof of concept" and measured the time to run a simple for loop with an addition (Justin used this example in his presentation, full code is below): @@ -224,7 +224,7 @@ Eventually this will lead to Vim 9! ## Code for sum time measurements -Vim was build with -O2. +Vim was built with -O2. ``` vim func VimOld() diff --git a/READMEdir/Contents b/READMEdir/Contents index 48b7c59e..f01a3fc5 100644 --- a/READMEdir/Contents +++ b/READMEdir/Contents @@ -9,15 +9,15 @@ Vim Vi IMproved. A clone of the UNIX text editor Vi. Very useful messages, shows current file name in window title, on-line help, rectangular cut/paste, etc., etc., etc... - Version 9.1. Also runs under UNIX, MS-Windows, Mac, etc. - vim91rt.tgz contains the documentation and syntax files. - vim91bin.tgz contains the binaries. - vim91src.tgz contains the sources. + Version 9.2. Also runs under UNIX, MS-Windows, Mac, etc. + vim92rt.tgz contains the documentation and syntax files. + vim92bin.tgz contains the binaries. + vim92src.tgz contains the sources. Author: Bram Moolenaar et al. Xxd Hex dumper and reader. Can be used to view files as hex, edit them and write them back. Can also be used to patch files. - Version 2023 Oct 25 - Author: Juergen Weigert + Version 2025 Nov 26 + Author: Juergen Weigert et al. diff --git a/READMEdir/README_ami.txt b/READMEdir/README_ami.txt index f9815108..a321fa06 100644 --- a/READMEdir/README_ami.txt +++ b/READMEdir/README_ami.txt @@ -1,4 +1,4 @@ -README_ami.txt for version 9.1 of Vim: Vi IMproved. +README_ami.txt for version 9.2 of Vim: Vi IMproved. This file explains the installation of Vim on Amiga systems. See README.txt for general information about Vim. @@ -16,8 +16,8 @@ easily upgrade to a new version. For example: You would then unpack the archives like this: cd dh0:editors - tar xf t:vim91bin.tar - tar xf t:vim91rt.tar + tar xf t:vim92bin.tar + tar xf t:vim92rt.tar Set the $VIM environment variable to point to the top directory of your Vim files. For the above example: diff --git a/READMEdir/README_amibin.txt b/READMEdir/README_amibin.txt index 224ff36c..69b5320f 100644 --- a/READMEdir/README_amibin.txt +++ b/READMEdir/README_amibin.txt @@ -1,8 +1,8 @@ -README_amibin.txt for version 9.1 of Vim: Vi IMproved. +README_amibin.txt for version 9.2 of Vim: Vi IMproved. See "README.txt" for general information about Vim. See "README_ami.txt" for installation instructions for the Amiga. -These files are in the runtime archive (vim91rt.tgz). +These files are in the runtime archive (vim92rt.tgz). The Amiga "bin" archive contains the Vim executable for the Amiga. It was diff --git a/READMEdir/README_amisrc.txt b/READMEdir/README_amisrc.txt index 5fd4cf2c..fb3a4559 100644 --- a/READMEdir/README_amisrc.txt +++ b/READMEdir/README_amisrc.txt @@ -1,8 +1,8 @@ -README_amisrc.txt for version 9.1 of Vim: Vi IMproved. +README_amisrc.txt for version 9.2 of Vim: Vi IMproved. See "README.txt" for general information about Vim. See "README_ami.txt" for installation instructions for the Amiga. -These files are in the runtime archive (vim91rt.tgz). +These files are in the runtime archive (vim92rt.tgz). The Amiga source archive contains the files needed to compile Vim on the diff --git a/READMEdir/README_bindos.txt b/READMEdir/README_bindos.txt index 51fc2c59..43a54553 100644 --- a/READMEdir/README_bindos.txt +++ b/READMEdir/README_bindos.txt @@ -1,16 +1,16 @@ -README_bindos.txt for version 9.1 of Vim: Vi IMproved. +README_bindos.txt for version 9.2 of Vim: Vi IMproved. See "README.txt" for general information about Vim. See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows. -These files are in the runtime archive (vim91rt.zip). +These files are in the runtime archive (vim92rt.zip). There are several binary distributions of Vim for the PC. You would normally pick only one of them, but it's also possible to install several. These ones are available (the version number may differ): - vim91w32.zip Windows console version - gvim91.zip Windows GUI version - gvim91ole.zip Windows GUI version with OLE + vim92w32.zip Windows console version + gvim92.zip Windows GUI version + gvim92ole.zip Windows GUI version with OLE -You MUST also get the runtime archive (vim91rt.zip). -The sources are also available (vim91src.zip). +You MUST also get the runtime archive (vim92rt.zip). +The sources are also available (vim92src.zip). diff --git a/READMEdir/README_dos.txt b/READMEdir/README_dos.txt index c6509804..ce1779b0 100644 --- a/READMEdir/README_dos.txt +++ b/READMEdir/README_dos.txt @@ -1,4 +1,4 @@ -README_dos.txt for version 9.1 of Vim: Vi IMproved. +README_dos.txt for version 9.2 of Vim: Vi IMproved. This file explains the installation of Vim on MS-Windows systems. See "README.txt" for general information about Vim. @@ -41,19 +41,19 @@ These are the normal steps to install Vim from the .zip archives: located. Check the $VIM setting to see where it points to: set VIM For example, if you have - C:\vim\vim91 + C:\vim\vim92 do cd C:\ Binary and runtime Vim archives are normally unpacked in the same location, on top of each other. -2. Unpack the zip archives. This will create a new directory "vim\vim91", +2. Unpack the zip archives. This will create a new directory "vim\vim92", in which all the distributed Vim files are placed. Since the directory name includes the version number, it is unlikely that you overwrite existing files. Examples: - pkunzip -d gvim91.zip - unzip vim91w32.zip + pkunzip -d gvim92.zip + unzip vim92w32.zip You need to unpack the runtime archive and at least one of the binary archives. When using more than one binary version, be careful not to @@ -65,7 +65,7 @@ These are the normal steps to install Vim from the .zip archives: won't move or copy the runtime files. 3. Change to the new directory: - cd vim\vim91 + cd vim\vim92 Run the "install.exe" program. It will ask you a number of questions about how you would like to have your Vim setup. Among these are: - You can tell it to write a "_vimrc" file with your preferences in the @@ -76,8 +76,8 @@ These are the normal steps to install Vim from the .zip archives: console or in a shell. You can select one of the directories in your $PATH. If you skip this, you can add Vim to the search path manually: The simplest is to add a line to your autoexec.bat. Examples: - set path=%path%;C:\vim\vim91 - set path=%path%;D:\editors\vim\vim91 + set path=%path%;C:\vim\vim92 + set path=%path%;D:\editors\vim\vim92 - Create entries for Vim on the desktop and in the Start menu. That's it! @@ -89,8 +89,8 @@ Remarks: won't show a menubar. Then you need to set the $VIM environment variable to point to the top directory of your Vim files. Example: set VIM=C:\editors\vim - Vim version 9.1 will look for your vimrc file in $VIM, and for the runtime - files in $VIM/vim91. See ":help $VIM" for more information. + Vim version 9.2 will look for your vimrc file in $VIM, and for the runtime + files in $VIM/vim92. See ":help $VIM" for more information. - To avoid confusion between distributed files of different versions and your own modified vim scripts, it is recommended to use this directory layout: @@ -101,14 +101,14 @@ Remarks: C:\vim\vimfiles\ftplugin\*.vim Filetype plugins C:\vim\... Other files you made. Distributed files: - C:\vim\vim91\vim.exe The Vim version 9.1 executable. - C:\vim\vim91\doc\*.txt The version 9.1 documentation files. - C:\vim\vim91\bugreport.vim A Vim version 9.1 script. - C:\vim\vim91\... Other version 9.1 distributed files. + C:\vim\vim92\vim.exe The Vim version 9.2 executable. + C:\vim\vim92\doc\*.txt The version 9.2 documentation files. + C:\vim\vim92\bugreport.vim A Vim version 9.2 script. + C:\vim\vim92\... Other version 9.2 distributed files. In this case the $VIM environment variable would be set like this: set VIM=C:\vim - Then $VIMRUNTIME will automatically be set to "$VIM\vim91". Don't add - "vim91" to $VIM, that won't work. + Then $VIMRUNTIME will automatically be set to "$VIM\vim92". Don't add + "vim92" to $VIM, that won't work. - You can put your Vim executable anywhere else. If the executable is not with the other Vim files, you should set $VIM. The simplest is to add a line diff --git a/READMEdir/README_extra.txt b/READMEdir/README_extra.txt index ca88e2d0..7029f501 100644 --- a/READMEdir/README_extra.txt +++ b/READMEdir/README_extra.txt @@ -1,4 +1,4 @@ -README_extra.txt for version 9.1 of Vim: Vi IMproved. +README_extra.txt for version 9.2 of Vim: Vi IMproved. These extra files of Vim are for special purposes. This README explains what the files are for. For general information about Vim, see the "README.txt" diff --git a/READMEdir/README_haiku.txt b/READMEdir/README_haiku.txt index e4caf71a..c6d42f58 100644 --- a/READMEdir/README_haiku.txt +++ b/READMEdir/README_haiku.txt @@ -1,4 +1,4 @@ -README_haiku.txt for version 9.1 of Vim: Vi IMproved. +README_haiku.txt for version 9.2 of Vim: Vi IMproved. This file explains the installation of Vim on Haiku operating system. See "README.txt" for general information about Vim. diff --git a/READMEdir/README_mac.txt b/READMEdir/README_mac.txt index ff7ef5ca..5146cdf5 100644 --- a/READMEdir/README_mac.txt +++ b/READMEdir/README_mac.txt @@ -1,4 +1,4 @@ -README_mac.txt for version 9.1 of Vim: Vi IMproved. +README_mac.txt for version 9.2 of Vim: Vi IMproved. This file explains the installation of Vim on MacOS systems. See "README.txt" for general information about Vim. diff --git a/READMEdir/README_ole.txt b/READMEdir/README_ole.txt index f34b679a..17638a92 100644 --- a/READMEdir/README_ole.txt +++ b/READMEdir/README_ole.txt @@ -1,4 +1,4 @@ -README_ole.txt for version 9.1 of Vim: Vi IMproved. +README_ole.txt for version 9.2 of Vim: Vi IMproved. This archive contains gvim.exe with OLE interface. This version of gvim.exe can also load a number of interface dynamically (you diff --git a/READMEdir/README_os2.txt b/READMEdir/README_os2.txt index a440918e..1e6b344c 100644 --- a/READMEdir/README_os2.txt +++ b/READMEdir/README_os2.txt @@ -1,4 +1,4 @@ -README_os2.txt for version 9.1 of Vim: Vi IMproved. +README_os2.txt for version 9.2 of Vim: Vi IMproved. This file used to explain the installation of Vim on OS/2 systems. However, support for OS/2 has been removed in patch 7.4.1008. diff --git a/READMEdir/README_os390.txt b/READMEdir/README_os390.txt index 94709792..94f2a1cc 100644 --- a/READMEdir/README_os390.txt +++ b/READMEdir/README_os390.txt @@ -1,4 +1,4 @@ -README_os390.txt for version 9.1 of Vim: Vi IMproved. +README_os390.txt for version 9.2 of Vim: Vi IMproved. This readme explains how to build Vim on z/OS. Formerly called OS/390. See "README.txt" for general information about Vim. diff --git a/READMEdir/README_src.txt b/READMEdir/README_src.txt index fc5ea15d..df1c97c8 100644 --- a/READMEdir/README_src.txt +++ b/READMEdir/README_src.txt @@ -1,8 +1,8 @@ -README_src.txt for version 9.1 of Vim: Vi IMproved. +README_src.txt for version 9.2 of Vim: Vi IMproved. The source archive contains the files needed to compile Vim on Unix systems. It is packed for Unix systems (NL line separator). For more information, see the README.txt file that comes with the runtime -archive (vim-9.1-rt.tar.gz). To be able to run Vim you MUST get the runtime +archive (vim-9.2-rt.tar.gz). To be able to run Vim you MUST get the runtime archive too! diff --git a/READMEdir/README_srcdos.txt b/READMEdir/README_srcdos.txt index e7ae7a26..1ec96d52 100644 --- a/READMEdir/README_srcdos.txt +++ b/READMEdir/README_srcdos.txt @@ -1,8 +1,8 @@ -README_srcdos.txt for version 9.1 of Vim: Vi IMproved. +README_srcdos.txt for version 9.2 of Vim: Vi IMproved. See "README.txt" for general information about Vim. See "README_dos.txt" for installation instructions for MS-Windows. -These files are in the runtime archive (vim91rt.zip). +These files are in the runtime archive (vim92rt.zip). The DOS source archive contains the files needed to compile Vim on MS-Windows. diff --git a/READMEdir/README_unix.txt b/READMEdir/README_unix.txt index 196628f1..fefe58d8 100644 --- a/READMEdir/README_unix.txt +++ b/READMEdir/README_unix.txt @@ -1,4 +1,4 @@ -README_unix.txt for version 9.1 of Vim: Vi IMproved. +README_unix.txt for version 9.2 of Vim: Vi IMproved. This file explains the installation of Vim on Unix systems. See "README.txt" for general information about Vim. diff --git a/READMEdir/README_vms.txt b/READMEdir/README_vms.txt index 4c47921c..6c697bb0 100644 --- a/READMEdir/README_vms.txt +++ b/READMEdir/README_vms.txt @@ -1,4 +1,4 @@ -README_vms.txt for version 9.1 of Vim: Vi IMproved. +README_vms.txt for version 9.2 of Vim: Vi IMproved. This file explains the installation of Vim on VMS systems. See "README.txt" in the runtime archive for information about Vim. diff --git a/READMEdir/README_w32s.txt b/READMEdir/README_w32s.txt index d71faeb4..bbd21750 100644 --- a/READMEdir/README_w32s.txt +++ b/READMEdir/README_w32s.txt @@ -1,4 +1,4 @@ -README_w32s.txt for version 9.1 of Vim: Vi IMproved. +README_w32s.txt for version 9.2 of Vim: Vi IMproved. This file used to explain the installation of Vim on MS-Windows 3.1 and 3.11 systems. However, support for MS-Windows 3.1 and 3.11 has been removed in diff --git a/ci/config.mk.sed b/ci/config.mk.sed index d8889019..f667b2c0 100644 --- a/ci/config.mk.sed +++ b/ci/config.mk.sed @@ -1,3 +1,3 @@ /^CFLAGS[[:blank:]]*=/s/$/ -Wall -Wextra -Wshadow -Wstrict-prototypes -Wmissing-prototypes -Werror -Wno-deprecated-declarations/ -/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-shadow/ +/^PERL_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-function -Wno-strict-prototypes -Wno-shadow/ /^RUBY_CFLAGS_EXTRA[[:blank:]]*=/s/$/ -Wno-error=unused-parameter -Wno-strict-prototypes/ diff --git a/ci/ddebs.list b/ci/ddebs.list index e4491a60..f767e936 100644 --- a/ci/ddebs.list +++ b/ci/ddebs.list @@ -1,3 +1,2 @@ deb http://ddebs.ubuntu.com noble main restricted universe multiverse deb http://ddebs.ubuntu.com noble-updates main restricted universe multiverse -deb http://ddebs.ubuntu.com noble-proposed main restricted universe multiverse diff --git a/ci/hlgroups.ignore b/ci/hlgroups.ignore index a046eb12..681b1208 100644 --- a/ci/hlgroups.ignore +++ b/ci/hlgroups.ignore @@ -67,3 +67,4 @@ Visual VisualNOS WarningMsg WildMenu +WinColor diff --git a/debian/changelog b/debian/changelog index 503e54eb..f3b1b7d8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,69 @@ -vim (2:9.1.1882-1deepin1) unstable; urgency=medium +vim (2:9.2.0218-1) unstable; urgency=medium - * Set NoDisplay=true for vim.desktop + * New upstream tag + + 9.2.0168: Fix invalid pointer casting in string_convert(), causing test + failures on big-endian systems + + Security fixes + - 9.2.0137: crash when composing character as end of range in a regexp + collection (Closes: #1130658, CVE-2026-32249) + - 9.2.0202: command injection via newline in glob(), CVE-2026-33412 + + -- James McCoy Sat, 21 Mar 2026 07:38:26 -0400 + +vim (2:9.2.0136-1) unstable; urgency=medium + + * Merge upstream patch v9.2.0136 + + 9.2.0132: Skip Test_recover_corrupted_swap_file1 on big-endian systems + + -- James McCoy Wed, 11 Mar 2026 11:11:47 -0400 + +vim (2:9.2.0119-1) unstable; urgency=medium + + * New upstream release + + See ":help vim-9.2" for new features + + Security fixes + - 9.1.2148: buffer overflow in netbeans special_keys() handling (Closes: + #1127930, CVE-2026-26269) + * Merge upstream tag v9.2.0119 + + Security fixes + - 9.2.0073: possible command injection using netrw (Closes: #1129427, + CVE-2026-28417) + - 9.2.0074: crash with overlong emacs tag file (Closes: #1129428, + CVE-2026-28418) + - 9.2.0075: buffer underflow with emacs tag file (Closes: #1129429, + CVE-2026-28419) + - 9.2.0076: buffer-overflow with combining characters in terminal + handling (Closes: #1129430, CVE-2026-28420) + - 9.2.0077: crash when recovering a corrupted swap file (Closes: + #1129431, CVE-2026-28421) + - 9.2.0078: stack buffer overflow when rendering a statusline with a + multi-byte fill character on a very wide terminal (Closes: #1129432, + CVE-2026-28422) + + -- James McCoy Mon, 09 Mar 2026 06:50:59 -0400 + +vim (2:9.1.2141-1) unstable; urgency=medium + + * Merge upstream tag v9.1.2141 + + Security fixes + - 9.1.2132: Fix buffer-overflow in 'helpfile' option handling, + CVE-2026-25749 + + -- James McCoy Mon, 09 Feb 2026 07:06:42 -0500 + +vim (2:9.1.2103-1) unstable; urgency=medium + + * Merge upstream patch v9.1.2103 + + syntax/debcontrol.vim: + - Only highlight email addresses in Maintainer / Uploaders fields + - Add support for highlighting build profiles and architecture + restrictions (Closes: #1124089) + * Disable flaky Test_client_server_stopinsert test + * Remove Rules-Requires-Root, since no is the default value + * Remove Priority field, since optional is the default value + * Declare compliance with Policy 4.7.3 - -- Tianyu Chen Thu, 15 Jan 2026 10:29:01 +0800 + -- James McCoy Fri, 23 Jan 2026 06:27:15 -0500 vim (2:9.1.1882-1) unstable; urgency=medium diff --git a/debian/changelog.upstream b/debian/changelog.upstream deleted file mode 100644 index d0569804..00000000 --- a/debian/changelog.upstream +++ /dev/null @@ -1,1698 +0,0 @@ -Patches for Vim - Vi IMproved 9.0 - -The files in this directory contain source code changes to fix problems -in a released version of Vim. Each file also contains an explanation of -the problem that is fixed, like the message that was sent to the vim-dev -maillist. - -The best is to apply the patches in sequence. This avoids problems when -a patch depends on a previous patch. - -Before patching, change to the top Vim directory, where the "src" and -"runtime" directories are located. -Depending on the version of "patch" that you use, you may have add an -argument to make it patch the right file: - patch -p < 9.0.0001 - patch -p0 < 9.0.0001 - -After applying a patch, you need to compile Vim. There are no patches -for binaries. - -Checksums for the patch files can be found in the file MD5SUMS. - - -Individual patches for Vim 9.0: - - SIZE NAME FIXES - 10943 9.0.0001 Travis CI is no longer used - 7187 9.0.0002 map functionality outside of map.c - 13500 9.0.0003 functions are global while they could be local - 3161 9.0.0004 plural messages not translated properly - 1987 9.0.0005 hare files are not recognized - 7042 9.0.0006 not all Visual Basic files are recognized - 23035 9.0.0007 no support for double, dotted and dashed underlines - 6874 9.0.0008 cannot specify the variable name for "xxd -i" - 2278 9.0.0009 going past the end of a menu item with only modifier - 3026 9.0.0010 returning 0 for has('patch-9.0.0') is inconsistent - 1982 9.0.0011 reading beyond the end of the line with put command - 5607 9.0.0012 signature files not detected properly - 22831 9.0.0013 reproducing memory access errors can be difficult - 2178 9.0.0014 missing part of the test override change - 2455 9.0.0015 with EXITFREE defined terminal menus are not cleared - 6026 9.0.0016 comparing line pointer for 'breakindent' is not reliable - 1968 9.0.0017 accessing memory beyond the end of the line - 2237 9.0.0018 going over the end of the typahead - 2038 9.0.0019 timers test not run where possible - 2512 9.0.0020 with some completion reading past end of string - 3392 9.0.0021 invalid memory access when adding word to spell word list - 1537 9.0.0022 spell test fails - 7528 9.0.0023 on Solaris timer_create() exists but does not work - 1807 9.0.0024 may access part of typeahead buf that isn't filled - 2411 9.0.0025 accessing beyond allocated memory with the cmdline window - 2597 9.0.0026 accessing freed memory with diff put - 28245 9.0.0027 the command line test is getting quite big - 3048 9.0.0028 MS-Windows: tests fail if there is a "runtime" directory - 4014 9.0.0029 the bitmaps/vim.ico file is not in the distribution - 1834 9.0.0030 matchfuzzy test depends on path of current directory - 6659 9.0.0031 of user command does not have correct verbose value - 3962 9.0.0032 in the quickfix window 'cursorline' overrules QuickFixLine - 2617 9.0.0033 on a Belgian keyboard CTRL-[ does not work - 3121 9.0.0034 spell tests do not always clear the word list - 2749 9.0.0035 spell dump may go beyond end of an array - 43198 9.0.0036 'fillchars' cannot have window-local values - 1806 9.0.0037 build error - 3496 9.0.0038 'listchars' test fails - 1584 9.0.0039 not all systems have GDK_KEY_dead_circumflex - 15109 9.0.0040 use of set_chars_option() is confusing - 5565 9.0.0041 a couple of filetype patterns do not have "*" before "/etc" - 1498 9.0.0042 missing change for filetype detection - 3054 9.0.0043 insufficient testing for bracket commands - 4013 9.0.0044 typos in comments, wrapping lines - 8646 9.0.0045 reading past end of completion with a long line - 2228 9.0.0046 reading past end of completion with duplicate match - 2821 9.0.0047 using freed memory with recursive substitute - 21444 9.0.0048 cursor in wrong column with mouse click after concealed text - 2452 9.0.0049 csv and tsv files are not recognized - 1553 9.0.0050 split else-if is confusing - 2767 9.0.0051 using CTRL-C wih :append may hang Vim - 3201 9.0.0052 "zG" may throw an error if invalid character follows - 2194 9.0.0053 E1281 not tested with the old regexp engine - 1608 9.0.0054 compiler warning for size_t to int conversion - 4433 9.0.0055 bitbake files are not detected - 2158 9.0.0056 wrong line number reported when :cexpr fails in :def function - 2009 9.0.0057 has('patch-xxx') returns true - 8298 9.0.0058 Win32: cannot test low level events - 11801 9.0.0059 test file has wrong name - 2022 9.0.0060 accessing uninitialized memory when completing long line - 5900 9.0.0061 ml_get error with nested autocommand - 1889 9.0.0062 compiler warnings for signed/unsigned char - 57792 9.0.0063 too many type casts for dict_get functions - 2537 9.0.0064 confusing error when using "q:" in command line window - 6470 9.0.0065 cross-compiling doesn't work because of timer_create check - 2828 9.0.0066 switching window uneccarily when getting buffer options - 76728 9.0.0067 cannot show virtual text - 1896 9.0.0068 build fails with tiny features - 1595 9.0.0069 leaking memory when using text prop with inserted text - 2892 9.0.0070 using utfc_ptr2char_len() when length is negative - 2635 9.0.0071 command overlaps with printed text in scrollback - 1617 9.0.0072 compiler warning for uninitialized variable - 3866 9.0.0073 too many files recognized as bsdl - 2538 9.0.0074 Coverity warns for double free - 2021 9.0.0075 some compilers warn for using an uninitialized variable - 2302 9.0.0076 no test for what patch 8.1.1424 fixes - 4067 9.0.0077 wrong restored cursor position if switching window in autocmd - 4153 9.0.0078 star register is unexpectedly changed when deleting - 3168 9.0.0079 error in autoload script not reported for 'foldexpr' - 2242 9.0.0080 compiler warning for size_t to int conversion - 2614 9.0.0081 command line completion of user command may have duplicates - 3965 9.0.0082 cannot interrupt global command from command line - 8265 9.0.0083 ModeChanged event not triggered when leaving cmdline window - 2596 9.0.0084 using "terraform" filetype for .tfvars file is bad - 2232 9.0.0085 ":write" fails after ":file name" and then ":edit" - 2801 9.0.0086 tabline is not redrawn when entering command line - 9266 9.0.0087 MS-Windows: CTRL-[ on Belgian keyboard does not work like Esc - 2810 9.0.0088 pattern for detecting bitbake files is not sufficient - 2771 9.0.0089 fuzzy argument completion doesn't work for shell commands - 3448 9.0.0090 no error when assigning bool to a string option - 1571 9.0.0091 duplicate error number - 3344 9.0.0092 plugins cannot change v:completed_item - 2610 9.0.0093 sway config files are recognized as i3config - 3305 9.0.0094 cursor restored unexpected with nested autocommand - 3211 9.0.0095 conditions are always true - 9909 9.0.0096 flag "new_value_alloced" is always true - 3080 9.0.0097 long quickfix line is truncated for :clist - 4463 9.0.0098 missing include file in timer_create configure check - 6440 9.0.0099 scrollback can be wrong after redrawing the command line - 1791 9.0.0100 get hit-enter prompt for system() when '!' is in 'guioptions' - 2794 9.0.0101 invalid memory access in diff mode with "dp" and undo - 1977 9.0.0102 reading past end of line with insert mode completion - 10290 9.0.0103 if running configure with cached results -lrt may be missing - 2192 9.0.0104 going beyond allocated memory when evaluating string constant - 4082 9.0.0105 illegal memory access when pattern starts with illegal byte - 1965 9.0.0106 illegal byte regexp test doesn't fail when fix is reversed - 1679 9.0.0107 condition always has the same value - 3603 9.0.0108 configure check for timer_create may give wrong error - 3041 9.0.0109 writing over the end of a buffer on stack - 6200 9.0.0110 help tag generation picks up words in code examples - 3507 9.0.0111 "nocombine" is missing from synIDattr() - 2215 9.0.0112 MS-Windows: test fails because file already exists - 3585 9.0.0113 has() is not strict about parsing the patch version - 20547 9.0.0114 the command line takes up space even when not used - 3596 9.0.0115 when 'cmdheight' is zero pressing ':' may scroll a window - 4387 9.0.0116 virtual text not displayed if 'signcolumn' is "yes" - 4359 9.0.0117 text of removed textprop with text is not freed - 5408 9.0.0118 no test for what patch 9.0.0115 fixes - 2331 9.0.0119 tiny chance that creating a backup file fails - 2374 9.0.0120 MS-Windows GUI: cannot use AltGr + Space - 25626 9.0.0121 cannot put virtual text after or below a line - 2021 9.0.0122 breakindent test fails - 1599 9.0.0123 cannot build with small features - 20585 9.0.0124 code has more indent than needed - 3234 9.0.0125 cursor positioned wrong with virtual text after the line - 3110 9.0.0126 expanding file names fails in dir with more than 255 entries - 1607 9.0.0127 unused variable - 2669 9.0.0128 Coverity complains about possible double free - 1558 9.0.0129 compiler warning for int/size_t usage - 5275 9.0.0130 cursor position wrong when inserting around virtual text - 4402 9.0.0131 virtual text with Tab is not displayed correctly - 9119 9.0.0132 multi-byte characters in virtual text not handled correctly - 8894 9.0.0133 virtual text after line moves to joined line - 2416 9.0.0134 no test for text property with column zero - 2321 9.0.0135 comment about tabpage line above the wrong code - 2556 9.0.0136 after CTRL-Left-mouse click a mouse scroll also has CTRL - 1489 9.0.0137 debugger test may fail when $CWD is very long - 4083 9.0.0138 not enough characters accepted for 'spellfile' - 19135 9.0.0139 truncating virtual text after a line not implemented - 3634 9.0.0140 execute() does not use the "legacy" command modifier - 3107 9.0.0141 "delmenu" does not remove autocmmands - 4144 9.0.0142 crash when adding and removing virtual text - 7209 9.0.0143 cursor positioned after virtual text in empty line - 6648 9.0.0144 text property cannot override 'cursorline' highlight - 9354 9.0.0145 substitute that joins lines drops text properties - 4116 9.0.0146 missing part of change for "override" flag - 3791 9.0.0147 cursor positioned wrong after two "below" text properties - 3348 9.0.0148 a "below" aligned text property gets 'showbreak' displayed - 2744 9.0.0149 test for fuzzy completion fails sometimes - 4119 9.0.0150 error for using #{ in an expression is a bit confusing - 73530 9.0.0151 a "below" aligned text property does not work with 'nowrap' - 1616 9.0.0152 warning for unused argument in small build - 85848 9.0.0153 no fold and sign column for virtual text with "below" align - 10213 9.0.0154 text properties wrong after splitting a line - 7252 9.0.0155 text properties "right" and "after" wrong with 'nowrap' - 5883 9.0.0156 giving E1170 only in an expression is confusing - 5456 9.0.0157 'showbreak' displayed below truncated "after" text prop - 6984 9.0.0158 with 'nowrap' "below" property not displayed correctly - 1981 9.0.0159 cannot build with small features - 1612 9.0.0160 some diff mode tests fail - 1692 9.0.0161 warning for uninitialized variable - 3263 9.0.0162 text property "below" gets indent if 'breakindent' is set - 2771 9.0.0163 text property not adjusted for text inserted with "p" - 2051 9.0.0164 using freed memory with put command - 10170 9.0.0165 looking up a text property type by ID is slow - 2762 9.0.0166 when using text properties line text length computed twice - 2445 9.0.0167 checking for text properties could be a bit more efficient - 12352 9.0.0168 cursor positioned wrong with two virtual text properties - 2982 9.0.0169 insufficient testing for line2byte() with text properties - 4918 9.0.0170 various minor code formatting issues - 1929 9.0.0171 quickfix line highlight is overruled by 'cursorline' - 2292 9.0.0172 trying to allocate zero bytes - 1718 9.0.0173 assert fails only on MS-Windows - 2230 9.0.0174 no error for using "#{ comment" in a compiled function - 3698 9.0.0175 spell checking for capital not working with trailing space - 5960 9.0.0176 checking character options is duplicated and incomplete - 3553 9.0.0177 cursor position wrong with 'virtualedit' and mouse click - 12603 9.0.0178 cursor position wrong with virtual text before Tab - 10693 9.0.0179 cursor pos wrong with wrapping virtual text in empty line - 1599 9.0.0180 stray logfile appears when running tests - 8334 9.0.0181 textprop test with line2byte() fails on MS-Windows - 2585 9.0.0182 quarto files are not recognized - 4622 9.0.0183 extra space after virtual text when 'linebreak' is set - 2851 9.0.0184 virtual text prop highlight continues after truncation - 5393 9.0.0185 virtual text does not show if text prop at same position - 10322 9.0.0186 virtual text without highlighting does not show - 2194 9.0.0187 command line height changes when maximizing window height - 2491 9.0.0188 strange effects when using "text_align" with non-zero column - 2050 9.0.0189 invalid memory access for text prop without highlight - 6751 9.0.0190 the way 'cmdheight' can be made zero is inconsistent - 3834 9.0.0191 messages test fails; window size incorrect - 2600 9.0.0192 possible invalid memory access when 'cmdheight' is zero - 11352 9.0.0193 search and match highlight interfere with virtual text - 5895 9.0.0194 cursor displayed in wrong position after removing text prop - 2540 9.0.0195 metafun files are not recogized - 17289 9.0.0196 finding value in list may require a for loop - 2045 9.0.0197 astro files are not detected - 2284 9.0.0198 ml_get error when switching buffer in Visual mode - 5503 9.0.0199 cursor position wrong with two right-aligned virtual texts - 8402 9.0.0200 cursor wrong if 'nowrap' and two right aligned text props - 6257 9.0.0201 CursorLine highlight overrules virtual text highlight - 10832 9.0.0202 code and help for indexof() is not ideal - 7107 9.0.0203 confusing variable name - 5210 9.0.0204 indexof() may leak memory - 8258 9.0.0205 cursor in wrong position when inserting after virtual text -175700 9.0.0206 redraw flags are not named specifically - 2859 9.0.0207 stacktrace not shown when debugging - 5593 9.0.0208 the override flag has no effect for virtual text - 2383 9.0.0209 build error with small features - 7914 9.0.0210 'list' mode does not work properly with virtual text - 2315 9.0.0211 invalid memory access when compiling :lockvar - 2221 9.0.0212 invalid memory access when compiling :unlet - 3090 9.0.0213 using freed memory with error in assert argument - 11813 9.0.0214 splitting a line may duplicate virtual text - 1732 9.0.0215 not passing APC_INDENT flag - 2211 9.0.0216 undo earlier test sometimes fails on MS-Windows - 4327 9.0.0217 'shellslash' works differently when sourcing a script again - 2922 9.0.0218 reading before the start of the line - 4005 9.0.0219 cannot make a funcref with "s:func" in a def function - 3758 9.0.0220 invalid memory access with for loop over NULL string - 3307 9.0.0221 accessing freed memory if compiling nested function fails - 14260 9.0.0222 no good reason why text objects are only in larger builds - 1750 9.0.0223 typo in diffmode test - 2841 9.0.0224 Using NULL pointer when skipping compiled code - 8498 9.0.0225 using freed memory with multiple line breaks in expression - 1744 9.0.0226 job_start() test may fail under valgrind - 1826 9.0.0227 cannot read error message when abort() is called - 3601 9.0.0228 crash when pattern looks below the last line - 7271 9.0.0229 Vim9: error message for missing type is not clear - 8754 9.0.0230 no error for comma missing in list in :def function - 3663 9.0.0231 expanding "**" may loop forever with directory links - 2439 9.0.0232 test with BufNewFile autocmd is flaky - 16452 9.0.0233 removing multiple text properties takes many calls - 3115 9.0.0234 cannot make difference between :normal end and argument char - 3539 9.0.0235 'autoshelldir' does not work with chunked respose - 2162 9.0.0236 popup menu not removed when 'wildmenu' reset while visible - 1521 9.0.0237 Mac: cannot build if dispatch.h is not available - 2690 9.0.0238 Shift-Tab shows matches on cmdline when 'wildmenu' is off - 1646 9.0.0239 build failure without the +wildmenu feature - 2485 9.0.0240 crash when using ":mkspell" with an empty .dic file - 3716 9.0.0241 "make install" does not install shared syntax file - 2533 9.0.0242 "make install" still fails - 2016 9.0.0243 text properties "below" sort differently on MS-Windows - 8292 9.0.0244 cannot easily get the list of sourced scripts - 15012 9.0.0245 mechanism to prevent recursive screen updating is incomplete - 2774 9.0.0246 using freed memory when 'tagfunc' deletes the buffer - 36292 9.0.0247 cannot add padding to virtual text without highlight - 2721 9.0.0248 duplicate code in finding a script in the execution stack - 2079 9.0.0249 no test for what 9.0.0234 fixes - 2009 9.0.0250 slightly inconsistent error messages - 1562 9.0.0251 test output shows up in git - 4311 9.0.0252 cursor in wrong place after virtual text - 16714 9.0.0253 a symlink to an autoload script results in two entries - 2502 9.0.0254 typo in function name - 1616 9.0.0255 build failure without the eval feature - 2188 9.0.0256 compiler warning for uninitialized variables - 1895 9.0.0257 "->" in ":scriptnames" output not tested yet - 2518 9.0.0258 MS-Windows installer skips syntax/shared - 5477 9.0.0259 crash with mouse click when not initialized - 2511 9.0.0260 using freed memory when using 'quickfixtextfunc' recursively - 4085 9.0.0261 bufload() reads a file even if the name is not a file name - 1367 9.0.0262 build failure without the +quickfix feature - 19310 9.0.0263 too many #ifdefs - 2628 9.0.0264 CI still runs on Ubuntu 18.04 - 32267 9.0.0265 no good reason why the "gf" command isn't in the tiny version - 1874 9.0.0266 compiler warning for unused argument - 1374 9.0.0267 Coverity workflow still uses Ubuntu 18.04 - 1546 9.0.0268 build error without the +eval feature - 10096 9.0.0269 getscriptinfo() does not include the version - 20354 9.0.0270 some values of 'path' and 'tags' invalid in the tiny version - 2819 9.0.0271 using INIT() in non-header files - 4566 9.0.0272 BufReadCmd not triggered when loading a "nofile" buffer - 3480 9.0.0273 Konsole termresponse not recognized - 4905 9.0.0274 netrw plugin does not show remote files - 2497 9.0.0275 BufEnter not triggered when using ":edit" in "nofile" buffer - 5701 9.0.0276 'buftype' values not sufficiently tested - 1876 9.0.0277 Coverity CI: update-alternatives not needed with Ubuntu 20.04 - 11316 9.0.0278 the +wildignore feature is nearly always available - 22379 9.0.0279 the tiny version has the popup menu but not 'wildmenu' - 13858 9.0.0280 the builtin termcap list depends on the version - 2212 9.0.0281 build failure without the +eval feature - 2709 9.0.0282 a nested timout stops the previous timeout - 4048 9.0.0283 cannot complete "syn list @cluster" - 5126 9.0.0284 using static buffer for multiple completion functions - 12614 9.0.0285 it is not easy to change the command line from a plugin - 6956 9.0.0286 using freed memory when location list changed in autocmd - 10182 9.0.0287 Irix systems no longer exist - 26570 9.0.0288 when 'cmdheight' is zero some messages are not displayed - 2637 9.0.0289 invalid memory write - 2739 9.0.0290 compiler warning for variable set but not used - 1475 9.0.0291 test failing - 1891 9.0.0292 test causes another test to fail - 2452 9.0.0293 messages window not hidden when starting a command line - 5546 9.0.0294 crash when 'cmdheight' is 0 and popup_clear() used - 2056 9.0.0295 GUI drop files test sometimes fails - 4522 9.0.0296 message in popup is shortened unnecessary - 6894 9.0.0297 cursor position wrong after right aligned virtual text - 1687 9.0.0298 compiler warning for size_t to int conversion - 3958 9.0.0299 error messages for setcmdline() could be better - 8873 9.0.0300 'cpoptions' tests are flaky - 1923 9.0.0301 the message window popup is delayed after an error message - 1673 9.0.0302 CI for Coverity is bothered by deprecation warnings - 12644 9.0.0303 it is not easy to get information about a script - 4880 9.0.0304 WinScrolled is not triggered when only skipcol changes - 1864 9.0.0305 CI lists useless deprecation warnings - 3492 9.0.0306 buffer write message is two lines in message popup window - 5221 9.0.0307 :echomsg doesn't work properly with cmdheight=0 - 2493 9.0.0308 when cmdheight is zero the attention prompt doesn't show - 2070 9.0.0309 invalid memory access when cmdheight is zero - 2186 9.0.0310 output of :messages dissappears when cmdheight is zero - 1495 9.0.0311 test for hit-Enter prompt fails - 1458 9.0.0312 test for cmdheight zero fails - 20026 9.0.0313 using common name in tests leads to flaky tests - 2196 9.0.0314 VDM files are not recognized - 2325 9.0.0315 shell command is displayed in message window - 4143 9.0.0316 screen flickers when 'cmdheight' is zero - 7030 9.0.0317 when updating the whole screen a popup may not be redrawn - 14668 9.0.0318 clearing screen causes flicker - 2314 9.0.0319 Godot shader files are not recognized - 7900 9.0.0320 command line type of CmdlineChange differs from getcmdtype() - 14484 9.0.0321 cannot use the message popup window directly - 2301 9.0.0322 crash when no errors and 'quickfixtextfunc' is set -121190 9.0.0323 using common name in tests leads to flaky tests - 7684 9.0.0324 MS-Windows: resolve() test fails - 2966 9.0.0325 MS-Windows: completion test fails - 2011 9.0.0326 some changes for cmdheight=0 are not needed - 8874 9.0.0327 items() does not work on a list - 9308 9.0.0328 OLD_DIGRAPHS is unused - 2410 9.0.0329 ":highlight" hangs when 'cmdheight' is zero - 2910 9.0.0330 method tests fail - 11851 9.0.0331 cannot use items() on a string - 3042 9.0.0332 overwrite check may block BufWriteCmd - 2328 9.0.0333 method test fails - 1797 9.0.0334 test does not properly clean up - 46698 9.0.0335 checks for Dictionary argument often give a vague error - 60128 9.0.0336 tests are flaky because of using a common file name - 1480 9.0.0337 flicker when resetting cmdline_row after updating the screen - 6289 9.0.0338 return value of list_append_list() not always checked - 2092 9.0.0339 no check if the return value of XChangeGC() is NULL - 38773 9.0.0340 the 'cmdheight' zero support causes too much trouble - 4041 9.0.0341 mapset() does not restore mapping properly - 11317 9.0.0342 ":wincmd =" equalizes in two directions - 3601 9.0.0343 ColorScheme autocommand triggered when colorscheme not found - 2907 9.0.0344 MS-Windows: background color wrong in Console - 22292 9.0.0345 error message for list argument could be clearer - 4941 9.0.0346 :horizontal modifier not fully supported - 5486 9.0.0347 MS-Windows: cannot set cursor shape in Windows Terminal - 3960 9.0.0348 MS-Windows: GUI mouse move event test is flaky - 5394 9.0.0349 filetype of *.sil files not well detected - 9580 9.0.0350 :echowindow does not work in a compiled function - 4158 9.0.0351 message window may obscure the command line - 3141 9.0.0352 using :echowindow in a timer clears part of message - 1359 9.0.0353 missing entry in switch - 1768 9.0.0354 MS-Windows: starting a python server for test sometimes fails - 2781 9.0.0355 check for uppercase char in autoload name is wrong - 3771 9.0.0356 :echowindow sets the in_echowindow flag too early - 6055 9.0.0357 'linebreak' interferes with text property highlight - 4452 9.0.0358 'breakindent' does not indent non-lists - 28606 9.0.0359 error message for wrong argument type is not specific - 2741 9.0.0360 crash when invalid line number on :for is ignored - 3593 9.0.0361 removing a listener may result in a memory leak - 3554 9.0.0362 expanding ":e %" does not work for remote files -138526 9.0.0363 common names in test files causes tests to be flaky - 6137 9.0.0364 clang static analyzer gives warnings - 2234 9.0.0365 file name used in test is unusual - 4430 9.0.0366 cannot use import->Func() in lambda - 3837 9.0.0367 Coverity complains about dropping sign of character - 1418 9.0.0368 old Coverity warning for using NULL pointer - 3607 9.0.0369 a failing flaky test doesn't mention the time - 44716 9.0.0370 cleaning up afterwards can make a function messy - 1721 9.0.0371 compiler warning for uninitialized variable - 2872 9.0.0372 MS-Windows: "%T" time format does not appear to work - 2620 9.0.0373 Coverity warns for NULL check and unused return value - 4174 9.0.0374 Coverity still complains about dropping sign of character - 9141 9.0.0375 the footer feature is unused - 7546 9.0.0376 clang warns for dead assignments - 1474 9.0.0377 argument assignment does not work - 1579 9.0.0378 compiler warning for uninitialized variable - 20849 9.0.0379 cleaning up after writefile() is a hassle - 24808 9.0.0380 deleting files in tests is a hassle - 1810 9.0.0381 writefile test leaves files behind - 2314 9.0.0382 freeing the wrong string on failure - 2230 9.0.0383 Coverity complains about unused value - 2611 9.0.0384 Covertity still complains about using return value of getc() - 1839 9.0.0385 GUI: when CTRL-D is mapped in Insert mode it gets inserted - 13495 9.0.0386 some code blocks are nested too deep - 7860 9.0.0387 repeat mapping doesn't use right script context - 19268 9.0.0388 the do_arg_all() function is too long - 2957 9.0.0389 crash when 'tagfunc' closes the window - 5208 9.0.0390 cannot use a partial with :defer - 14502 9.0.0391 using separate delete() call instead of writefile() 'D' flag - 2145 9.0.0392 inverted condition is a bit confusing - 3728 9.0.0393 signals test often fails on FreeBSD - 3364 9.0.0394 Cygwin: multibyte characters may be broken in terminal window - 1518 9.0.0395 clang warnings for function prototypes - 2583 9.0.0396 :findrepl does not escape '&' and '~' properly - 12285 9.0.0397 :defer not tested with exceptions and ":qa!" - 45368 9.0.0398 members of funccall_T are inconsistently named - 6152 9.0.0399 using :defer in expression funcref not tested - 2081 9.0.0400 GUI test sometimes hangs on CI - 3132 9.0.0401 CI uses older clang version - 2823 9.0.0402 javascript module files are not recoginzed - 2770 9.0.0403 'equalalways' may be off when 'laststatus' is zero - 3587 9.0.0404 crash when passing invalid arguments to assert_fails() - 10100 9.0.0405 arguments in a partial not used by a :def function - 6599 9.0.0406 deferred functions not invoked when partial func exits - 4141 9.0.0407 matchstr() does match column offset - 1499 9.0.0408 GUI test sometimes fails on MS-Windows - 2760 9.0.0409 #{g:x} was seen as a curly-braces expression - 1911 9.0.0410 struct member cts_lnum is unused - 16064 9.0.0411 only created files can be cleaned up with one call - 1454 9.0.0412 compiler warning for unused argument - 1981 9.0.0413 ASAN reports a memory leak - 3680 9.0.0414 matchstr() still does not match column offset - 4598 9.0.0415 on MS-Windows some tests are flaky - 3613 9.0.0416 ml_get error when appending lines in popup window - 2142 9.0.0417 Jsonnet files are not recognized - 55521 9.0.0418 manually deleting temp test files - 18265 9.0.0419 the :defer command does not check the function arguments - 1909 9.0.0420 function went missing - 5398 9.0.0421 MS-Windows makefiles are inconsistently named - 5509 9.0.0422 not enough testing of the :all command - 4742 9.0.0423 "for" and "while" not recognized after :vim9cmd and :legacy - 3382 9.0.0424 gitattributes files are not recognized - 2312 9.0.0425 autocmd test is a bit flaky on MS-Windows - 1935 9.0.0426 failed flaky tests report only start time - 7066 9.0.0427 Drupal theme files are not recognized - 8383 9.0.0428 autocmd test uses common file name - 6733 9.0.0429 not all keys are tested for the MS-Windows GUI - 10107 9.0.0430 cannot use repeat() with a blob - 2905 9.0.0431 current mode shows in message window - 4425 9.0.0432 crash when using for loop variable in closure - 2249 9.0.0433 Coverity warns for not checking allocation failure - 3938 9.0.0434 gitignore files are not recognized - 1488 9.0.0435 compiler warning for uninitialized variable - 19155 9.0.0436 CI: running tests in parallel causes flakiness - 3634 9.0.0437 no error when custom completion function returns wrong type - 24613 9.0.0438 cannot put virtual text above a line - 3606 9.0.0439 cursor wrong if inserting before line with virtual text above - 13683 9.0.0440 crash when using mkdir() with "R" flag in compiled function - 1751 9.0.0441 closure in for loop test fails on some systems - 6910 9.0.0442 virtual text "above" doesn't handel line numbers - 2761 9.0.0443 blueprint files are not recognized - 10590 9.0.0444 trying to declare g:variable gives confusing error - 20440 9.0.0445 when opening/closing window text moves up/down - 2512 9.0.0446 message window may be positioned too low - 7933 9.0.0447 using :echowin while at the hit-enter prompt causes problems - 2151 9.0.0448 SubRip files are not recognized - 14239 9.0.0449 there is no easy way to translate a key code into a string - 5741 9.0.0450 return value of argument check functions is inconsistent - 9832 9.0.0451 virtual text "above" does not work with 'nowrap' - 8727 9.0.0452 Visual highlighting extends into virtual text prop - 20323 9.0.0453 on an AZERTY keyboard digit keys get the shift modifier - 2537 9.0.0454 incorrect color for modeless selection with GTK - 7400 9.0.0455 a few problems with 'splitscroll' - 1563 9.0.0456 function called at debug prompt is also debugged - 3188 9.0.0457 substitute prompt does not highlight an empty match - 4858 9.0.0458 splitting a line with a text prop "above" moves it down - 4237 9.0.0459 Vim9: block in for loop doesn't behave like a code block - 10731 9.0.0460 loop variable can't be found - 2896 9.0.0461 'scroll' is not always updated - 1593 9.0.0462 ASAN warning for integer overflow - 2544 9.0.0463 command line test leaves directory behind - 3720 9.0.0464 with virtual text "above" indenting doesn't work well - 2960 9.0.0465 cursor moves when cmdwin is closed when 'splitscroll' is off - 8559 9.0.0466 virtual text wrong after adding line break after line - 1877 9.0.0467 build failure - 1498 9.0.0468 exectution stack underflow without the +eval feature - 3213 9.0.0469 cursor moves if cmdwin is closed when 'splitscroll' is off - 36637 9.0.0470 in :def function all closures in loop get the same variables - 2340 9.0.0471 no test for what patch 9.0.0469 fixes - 3010 9.0.0472 virtual text "below" doesn't show in list mode - 7607 9.0.0473 fullcommand() only works for the current script version - 1735 9.0.0474 fullcommand() test failure - 17026 9.0.0475 not using deferred delete in tests - 6049 9.0.0476 varargs does not work for replacement function of substitute() - 2580 9.0.0477 missing dependency may cause crashes on incomplete build - 13833 9.0.0478 test for 'splitscroll' takes too much time - 2079 9.0.0479 Valve Date Format files are not recognized - 2648 9.0.0480 cannot use a :def varargs function with substitute() - 34795 9.0.0481 in :def function all closures in loop get the same variables - 8567 9.0.0482 "g0" moves to wrong location with virtual text "above" - 2832 9.0.0483 illegal memory access when replacing in virtualedit mode - 14182 9.0.0484 in :def function all closures in loop get the same variables - 14923 9.0.0485 in :def function all closures in loop get the same variables - 4175 9.0.0486 text scrolled with 'nosplitscroll', autocmd win and help - 5318 9.0.0487 using freed memory with combination of closures - 2797 9.0.0488 cursor wrong with virtual text "above" and 'showbreak' - 4184 9.0.0489 using "end_lnum" with virtual text causes problems - 2988 9.0.0490 using freed memory with cmdwin and BufEnter autocmd -184992 9.0.0491 no good reason to build without the float feature - 1442 9.0.0492 cmdwin test fails on MS-Windows - 1424 9.0.0493 Perl test fails - 1620 9.0.0494 small build misses float function declaraitons - 2933 9.0.0495 closure doesn't work properly in nested loop - 29507 9.0.0496 no good reason to keep supporting Windows-XP - 2026 9.0.0497 LyRiCs files are not recognized - 7048 9.0.0498 various small issues - 2145 9.0.0499 in :def function list created after const is locked - 6401 9.0.0500 when quitting cmdline window with CTRL-C it remains visible - 2109 9.0.0501 warning for using uninitialized value in mouse test - 53374 9.0.0502 a closure in a nested loop in a :def function does not work - 2485 9.0.0503 build failure - 3179 9.0.0504 still a build failure - 8175 9.0.0505 various problems with 'nosplitscroll' - 2364 9.0.0506 line number argument for :badd does not work - 3311 9.0.0507 cmdline cleared when using :redrawstatus in CmdlineChanged - 3765 9.0.0508 when the channel test fails there is no clue why - 3075 9.0.0509 confusing error for "saveas" command with "nofile" buffer - 2001 9.0.0510 Chatito files are not recognized - 3877 9.0.0511 unnecessary scrolling for message of only one line - 4147 9.0.0512 cannot redraw the status lines when editing a command - 3391 9.0.0513 may not be able to use a pattern ad the debug prompt - 1945 9.0.0514 terminal test sometimes hangs - 31656 9.0.0515 virtual text highlight starts too early when 'number' is set - 16914 9.0.0516 virtual text "above" highlights gap after it - 6543 9.0.0517 when at the command line :redrawstatus does not work well - 4905 9.0.0518 virtual text highlight starts too early with 'nowrap' - 28323 9.0.0519 the win_line() function is much too long - 5674 9.0.0520 declaring a loop variable at the start of a block is clumsy - 1602 9.0.0521 compiler warns for unused argument in small version - 1572 9.0.0522 build fails on Appveyor - 1944 9.0.0523 more compiler warnings for arguments in small version - 10035 9.0.0524 build instructions for MS-Windows are outdated - 31804 9.0.0525 manually deleting temp test files - 3185 9.0.0526 MS-Windows: still some support for XP and old compilers - 3003 9.0.0527 long sign text may overflow buffer - 6979 9.0.0528 MS-Windows: no batch files for more recent MSVC versions - 1880 9.0.0529 appveyor setup contains outdated lines - 2786 9.0.0530 using freed memory when autocmd changes mark - 27822 9.0.0531 the win_line() function is much too long - 10830 9.0.0532 edit test is flaky when run under valgrind - 14739 9.0.0533 the win_line() function is much too long - 14926 9.0.0534 line number is displayed at virtual text "above" - 4280 9.0.0535 closure gets wrong value in for loop with two loop variables - 1670 9.0.0536 CI: codecov action update available - 28246 9.0.0537 the do_set() function is much too long - 23687 9.0.0538 manually deleting test temp files - 1862 9.0.0539 long message test can be flaky - 6536 9.0.0540 assigning stack variable to argument confuses Coverity - 1845 9.0.0541 terminal pwd test fails with a very long path name -381180 9.0.0542 MSVC build still has support for 2012 edition - 5607 9.0.0543 insufficient testing for assert and test functions - 3662 9.0.0544 minor issues with setting a string option - 3964 9.0.0545 when a test is slow and CI times out there is no time info - 33364 9.0.0546 supporting Ruby 1.8 makes code complicated - 2645 9.0.0547 looping over empty out_loop[] entries - 10294 9.0.0548 reduce() with a compiled lambda could be faster - 4584 9.0.0549 duplicated code in calling a :def function - 4594 9.0.0550 crash when closing a tabpage and buffer is NULL - 2356 9.0.0551 mode message is delayed when :echowin was used - 2710 9.0.0552 crash when using NUL in buffer that uses :source - 2986 9.0.0553 no error for "|" after "{" in lamda - 4521 9.0.0554 using freed memory when command follows lambda - 5644 9.0.0555 scrolling with 'nosplitscroll' in callback changing curwin - 1457 9.0.0556 leaking memory with nested functions - 3437 9.0.0557 valgrind reports possibly leaked memory - 1691 9.0.0558 Coverity warns for possibly using NULL pointer - 1885 9.0.0559 timer test may get stuck at hit-enter prompt - 10335 9.0.0560 elapsed time since testing started is not visible - 2335 9.0.0561 when a test gets stuck it just hangs forever - 1959 9.0.0562 HSL playlist files are not recognized - 2975 9.0.0563 timer_info() test fails - 5357 9.0.0564 a few tests keep failing on MacOS M1 - 1914 9.0.0565 cscope test causes problems with test timeout timer - 2312 9.0.0566 Nim files are not recognized - 4245 9.0.0567 'completeopt' "longest" is not used for complete() - 13084 9.0.0568 autocmd code is indented more than needed - 3445 9.0.0569 cannot easily get out when using "vim file | grep word" - 1749 9.0.0570 CI for Windows is still using codecov action 3.1.0 - 3247 9.0.0571 MS-Windows: CTRL-C can make Vim exit - 2549 9.0.0572 insert complete tests leave a mapping behind - 1399 9.0.0573 outdated dependencies go unnoticed - 1678 9.0.0574 timer garbage collect test hangs on Mac M1 - 3412 9.0.0575 the getchar() function behaves strangely with bracketed paste - 2292 9.0.0576 unused loop variables - 26127 9.0.0577 buffer underflow with unexpected :finally - 1393 9.0.0578 one timer test fails on Mac M1 - 7070 9.0.0579 using freed memory when 'tagfunc' wipes out buffer - 1925 9.0.0580 no CI running for MacOS on M1 - 1642 9.0.0581 adding a character for incsearch fails at end of line - 1793 9.0.0582 channel cwd test fails on Cirrus CI - 2388 9.0.0583 only recognizing .m3u8 files is inconsistent - 5103 9.0.0584 cscope test with wrong executable name fails - 1373 9.0.0585 when long message test fails the error message is not visible - 2237 9.0.0586 missing change in test - 13050 9.0.0587 Unicode tables are outdated - 1480 9.0.0588 MorphOS build is broken - 1907 9.0.0589 on AmigaOS4 the pid is available but the task address is used - 5395 9.0.0590 after exiting Insert mode spelling not checked in next line - 2596 9.0.0591 message window popup shows on only one tab page - 9411 9.0.0592 display not cleared when scrolling back in messages - 2638 9.0.0593 CI actions have too many permissions - 1617 9.0.0594 Makefile error message causes a shell error - 9695 9.0.0595 extra newline in messages after a verbose shell message - 1700 9.0.0596 CI on Mac M1 has the channel feature disabled - 2222 9.0.0597 cannot close a tab page with the middle mouse button - 2730 9.0.0598 using negative array index with negative width window - 2364 9.0.0599 latexmkrc files are not recognized - 1970 9.0.0600 GYP files are not recognized - 16421 9.0.0601 too much indent - 3714 9.0.0602 new TypeScript extensions are not recognized - 17743 9.0.0603 with 'nosplitscroll' folds are not handled correctly - 2210 9.0.0604 luacheckrc file is not recognized - 2210 9.0.0605 dump file missing - 1926 9.0.0606 system() opens a terminal window when "!" is in 'guioptions' - 2482 9.0.0607 verbose echo message test fails on Mac OS - 5539 9.0.0608 with spelling, deleting a full stop does not update next line - 2463 9.0.0609 blockedit test fails because of wrong indent - 2615 9.0.0610 global interrupt test fails when run under valgrind - 38835 9.0.0611 tests delete files with a separate delete() call - 3632 9.0.0612 blockedit test passes with wrong result - 6924 9.0.0613 running source tests leaves file behind - 3093 9.0.0614 SpellFileMissing autocmd may delete buffer - 6698 9.0.0615 using reduce() on a list from range() is a bit slow - 1666 9.0.0616 spell test fails because error message changed - 4125 9.0.0617 calling function for reduce() has too much overhead - 18102 9.0.0618 calling function for reduce() has too much overhead - 21042 9.0.0619 too many delete() calls in tests - 31200 9.0.0620 matchaddpos() can only add up to 8 matches - 1599 9.0.0621 filetype test leaves file behind - 7942 9.0.0622 matchaddpos() can get slow when adding many matches - 29942 9.0.0623 error for modifying a const is not detected at compile time - 1659 9.0.0624 leaking argument type array - 25852 9.0.0625 too many delete() calls in tests - 34764 9.0.0626 too many delete() calls in tests - 9737 9.0.0627 "const" and "final" both make the type a constant - 2159 9.0.0628 Coverity warns for not checking return value - 15922 9.0.0629 get an error for using const only when executing - 2659 9.0.0630 in Vim9 script a numbered function cannot be called - 70969 9.0.0631 too many delete() calls in tests - 12167 9.0.0632 calling a function from an "expr" option has overhead - 1584 9.0.0633 FEAT_TITLE was removed but is still used - 34670 9.0.0634 evaluating "expr" options has more overhead than needed - 2376 9.0.0635 build error and compiler warnings - 2507 9.0.0636 underline color may not work in some terminals - 8394 9.0.0637 syntax of commands in Vim9 script depends on +eval feature - 10454 9.0.0638 popup menu highlight wrong on top of preview popup - 6591 9.0.0639 checking for popup in screen_char() is too late - 24804 9.0.0640 cannot scroll by screen line if a line wraps - 1285 9.0.0641 missing part of the new option code - 1777 9.0.0642 breakindent test fails - 1759 9.0.0643 smoothscroll test fails - 5141 9.0.0644 'smoothscroll' is not copied to a new window on :split - 2747 9.0.0645 CTRL-Y does not stop at line 1 - 7806 9.0.0646 with 'smoothscroll' CTRL-E is wrong when 'foldmethod' set - 50958 9.0.0647 the 'splitscroll' option is not a good name - 7514 9.0.0648 when using powershell input redirection does not work - 6670 9.0.0649 no indication the first line is broken for 'smoothscroll' - 8417 9.0.0650 some tests are failing - 1521 9.0.0651 build fails without the +conceal feature - 10143 9.0.0652 'smoothscroll' not tested with 'number' and "n" in 'cpo' - 3528 9.0.0653 BS and DEL do not work properly in an interacive shell - 2094 9.0.0654 breakindent test fails - 4830 9.0.0655 passing modifier codes to a shell running in the GUI - 17786 9.0.0656 cannot specify another character to use instead of '@' - 73298 9.0.0657 too many #ifdefs - 1504 9.0.0658 tiny build fails on Mac OS - 1757 9.0.0659 wrong type of comment in SetSyn() function - 2422 9.0.0660 mapping with CTRL keys does not work in the GUI - 4452 9.0.0661 multi-byte "lastline" in 'fillchars' does not work properly - 3664 9.0.0662 concealed characters do not work correctly - 4694 9.0.0663 tests check for +cmdwin feature which is always present - 6316 9.0.0664 bad redrawing with spell checking, using "C" and "$" in 'cpo' - 4408 9.0.0665 setting 'cmdheight' has no effect if last window was resized - 13734 9.0.0666 spacing-combining characters handled as composing - 2575 9.0.0667 ml_get error when 'splitkeep' is "screen" - 2139 9.0.0668 CI on Mac M1 only uses clang - 43322 9.0.0669 too many delete() calls in tests - 4492 9.0.0670 no space for command line when there is a tabline - 7090 9.0.0671 negative topline using CTRL-Y with 'smoothscroll' and 'diff' - 6788 9.0.0672 line partly shows with 'smoothscroll' and 'scrolloff' zero - 4657 9.0.0673 first line wong with 'smoothscroll' and 'scrolloff' zero - 1600 9.0.0674 build error with tiny version - 2009 9.0.0675 search test screendump is outdated - 2574 9.0.0676 CI on Mac M1 with gcc actually uses clang - 4766 9.0.0677 breakindent test accepts wrong result - 8428 9.0.0678 using exclamation marks on :function - 2261 9.0.0679 tests failing with 'smoothscroll', 'number' and "n" in 'cpo' - 2219 9.0.0680 tests failing with 'breakindent', 'number' and "n" in 'cpo' - 3259 9.0.0681 "<<<" shows for 'smoothscroll' even when 'showbreak is set - 4054 9.0.0682 crash when popup with deleted timer is closed - 22129 9.0.0683 cannot specify a time for :echowindow - 2037 9.0.0684 skipped :exe command fails compilation on MS-Windows - 2316 9.0.0685 FORTIFY_SOURCE causes a crash in Vim9 script - 1857 9.0.0686 the right ALT key does not work on some MS-Windows keyboards - 12188 9.0.0687 "export def" does not work in a nested block - 2505 9.0.0688 debugger does not display the whole command - 1581 9.0.0689 compiler warning for unused function - 2020 9.0.0690 buffer size for expanding tab not correctly computed - 4206 9.0.0691 lalloc(0) error in listchars test - 1963 9.0.0692 PoE filter files are not recognized - 1841 9.0.0693 browse() first argument cannot be a bool - 17159 9.0.0694 no native sound support on Mac OS - 2759 9.0.0695 failing check for dictionary type for const any - 1754 9.0.0696 it is unclear if the +rightleft and +arabic features are used - 11218 9.0.0697 cursor in wrong position with Visual substitute -185711 9.0.0698 VisVim is outdated, does not work with current Visual Studio - 1443 9.0.0699 tiny build fails - 33631 9.0.0700 there is no real need for a "big" build - 8331 9.0.0701 with 'smoothscroll' cursor position not adjusted in long line - 5538 9.0.0702 incomplete testing cursor position with 'linebreak' set - 24166 9.0.0703 failing check for argument type for const any - 2348 9.0.0704 CI runs "tiny" and "small" builds, which are the same - 4892 9.0.0705 virtual text truncation does not take padding into account - 1555 9.0.0706 :help in a narrow window always opens at the top - 8191 9.0.0707 with 'smoothscroll' cursor position not adjusted in long line - 15032 9.0.0708 :confirm does not work properly for a terminal buffer - 8523 9.0.0709 virtual text "after" not correct with 'nowrap' - 6676 9.0.0710 quitting/unloading/hiding a terminal does not work properly - 2119 9.0.0711 SubStation Alpha files are not recognized - 6563 9.0.0712 wrong column when calling setcursorcharpos() with zero lnum - 2735 9.0.0713 of MenuPopup event is expanded like a file name - 5862 9.0.0714 with 'nowrap' two virtual text below not displayed correctly - 2327 9.0.0715 wrong argument for append() gives two error messages - 10149 9.0.0716 with 'nowrap' virtual text "after" does not scroll left - 2222 9.0.0717 compiler warning for unused variable in tiny build - 3645 9.0.0718 extra empty line between two virtual text "below" - 93680 9.0.0719 too many delete() calls in tests - 3255 9.0.0720 MS-Windows GUI may have pixel dust from antialiasing - 4965 9.0.0721 virtual text "above" with padding not displayed correctly - 5794 9.0.0722 virtual text "after" does not show with 'list' set - 3699 9.0.0723 extra empty line below virtual text when 'list' is set - 7387 9.0.0724 closure in compiled function gets same variable in block - 4585 9.0.0725 virtual text "after" wraps to next line when 'wrap' is off - 2940 9.0.0726 looping over list of lists works in script, not in function - 72218 9.0.0727 help in the repository differs from patched version too much - 2036 9.0.0728 extend() test fails - 3036 9.0.0729 the rightleft and arabic features are disabled - 1905 9.0.0730 startup test fails with right-left feature - 2303 9.0.0731 clang-tidy configuration files are not recognized - 3043 9.0.0732 no check for white space before and after "=<<" - 4948 9.0.0733 use of strftime() is not safe - 11913 9.0.0734 cursor position invalid when scrolling with 'smoothscroll' - 2324 9.0.0735 breakindent and scrolloff tests fail - 14099 9.0.0736 quickfix listing does not handle very long messages - 9733 9.0.0737 Lisp word only recognized when a space follows - 5701 9.0.0738 cannot suppress completion "scanning" messages - 6502 9.0.0739 mouse column not correctly used for popup_setpos - 3974 9.0.0740 prop_add_list() gives multiple errors for invalid argument - 5709 9.0.0741 cannot specify an ID for each item with prop_add_list() - 8373 9.0.0742 reading past end of the line when compiling a function - 1968 9.0.0743 starting cscope on Unix does not quote the arguments right - 3923 9.0.0744 in script in autoload dir exported variable is not found - 7523 9.0.0745 wrong cursor position when using "gj" and "gk" in a long line - 12953 9.0.0746 breakindent test cases are commented out - 36080 9.0.0747 too many #ifdefs - 5454 9.0.0748 Kitty may send key without modifiers with CSI u code - 10870 9.0.0749 alloc/free of buffer for each quickfix entry is inefficient - 4024 9.0.0750 crash when popup closed in callback - 14245 9.0.0751 'scrolloff' does not work well with 'smoothscroll' - 2995 9.0.0752 Rprofile files are not recognized - 6086 9.0.0753 some Ex commands are not in the help index - 2715 9.0.0754 'indentexpr' overrules lisp indenting in one situation - 1820 9.0.0755 huge build on macos always fails on CI - 5798 9.0.0756 no autocmd event for changing text in a terminal window - 4321 9.0.0757 line number not visisble with 'smoothscroll', 'nu' and 'rnu' - 4353 9.0.0758 "precedes" from 'listchars' overwritten by <<< - 1852 9.0.0759 huge build on macos does not use Perl - 1807 9.0.0760 display test for 'listchars' "precedes" fails - 12998 9.0.0761 cannot use 'indentexpr' for Lisp indenting - 1514 9.0.0762 build failure - 1441 9.0.0763 MS-Windows: warning for using int for size_t - 2328 9.0.0764 indent and option tests fail - 2356 9.0.0765 with a Visual block a put command column may go negative - 66370 9.0.0766 too many delete() calls in tests - 84754 9.0.0767 too many delete() calls in tests - 30413 9.0.0768 too many delete() calls in tests - 19609 9.0.0769 too many delete() calls in tests - 2778 9.0.0770 quickfix commands may keep memory allocated - 2031 9.0.0771 cannot always tell the difference beween tex and rexx files - 29673 9.0.0772 the libvterm code is outdated - 2153 9.0.0773 huge build on macos uses dynamic Perl - 82901 9.0.0774 the libvterm code is outdated - 13727 9.0.0775 MS-Windows: mouse scrolling not supported in the console - 13452 9.0.0776 MSVC can't have field name "small" - 22669 9.0.0777 code is indented too much - 4584 9.0.0778 indexing of unknown const type fails during compilation - 5256 9.0.0779 lsl and lm3 file extensions are not recognized - 1999 9.0.0780 'scroll' value computed in unexpected location - 13795 9.0.0781 workaround to rename "small" to "smallfont" is clumsy - 2298 9.0.0782 OpenVPN files are not recognized - 4194 9.0.0783 ":!" doesn't do anything but does update the previous command - 5943 9.0.0784 text prop "above" not right with 'number' and "n" in 'cpo' - 1552 9.0.0785 memory leak with empty shell command - 2750 9.0.0786 user command does not get number from :tab modifier - 2163 9.0.0787 mouse scrolling in terminal misbehaves without dll - 2887 9.0.0788 ModeChanged autocmd not executed when Visual ends with CTRL-C - 2449 9.0.0789 dummy buffer ends up in a window - 1801 9.0.0790 test for dummy buffer does not always produce the E86 error - 4171 9.0.0791 at the hit-Enter prompt the End and Home keys may not work - 2031 9.0.0792 MS-Windows: compiler complains about unused function - 4958 9.0.0793 MS-Windows: mouse scroll events only work with the dll - 7012 9.0.0794 there is no way to find out if modifyOtherKeys has been seen - 11700 9.0.0795 readblob() always reads the whole file - 2290 9.0.0796 mapping test fails in some situations - 3480 9.0.0797 order of assert function arguments is reverted - 2296 9.0.0798 clang format configuration files are not recognized - 3071 9.0.0799 in compiled function ->() on next line not recognized - 1366 9.0.0800 compiler complains about repeated typedef - 2075 9.0.0801 the modifyOtherKeys flag is set when it should not - 3737 9.0.0802 MS-Windows: cannot map console mouse scroll events - 4453 9.0.0803 readblob() cannot read from character device - 2833 9.0.0804 crash when trying to divide a number by -1 - 2483 9.0.0805 filetype autocmd may cause freed memory access - 4065 9.0.0806 'langmap' works differently when there are modifiers - 6922 9.0.0807 with 'smoothscroll' typing "0" may not go to the first column - 2800 9.0.0808 jsonnet filetype detection has a typo - 1995 9.0.0809 test for job writing to buffer fails - 4716 9.0.0810 readblob() returns empty when trying to read too much - 2291 9.0.0811 error if :echowin is preceded by a command modifier - 2382 9.0.0812 GUI mouse scrollwheel mappings don't work - 9540 9.0.0813 Kitty terminal is not recognized - 2981 9.0.0814 aws config files are not recognized - 477 9.0.0815 ":!" does not switch to the alternate screen - 7365 9.0.0816 CTRL-Z at end of file is always dropped - 346 9.0.0817 build error - 365 9.0.0818 "!ls" does not work - 5613 9.0.0819 still a build error, tests are failing - 2542 9.0.0820 memory leak with empty shell command - 3493 9.0.0821 crash when using win_move_statusline() in another tab page - 6795 9.0.0822 crash when dragging the statusline with a mapping - 3461 9.0.0823 mouse drag test fails - 4296 9.0.0824 crash when using win_move_separator() in other tab page - 9381 9.0.0825 cannot drag an entry in the tabpage line - 10599 9.0.0826 if 'endofline' is set CTRL-Z may be written in a wrong place - 1815 9.0.0827 key in tmux doesn't work when 'term' set to "xterm" - 53763 9.0.0828 various typos - 1648 9.0.0829 wrong counts in macro comment - 1541 9.0.0830 compiling with Perl on Mac 12 fails - 1392 9.0.0831 compiler warning for redefining HAVE_DUP - 1545 9.0.0832 deprecation warning causes build failure - 1621 9.0.0833 Mac: no +sound feature in huge build - 2056 9.0.0834 warning for missing return type - 2709 9.0.0835 the window title is not redrawn when 'endoffile' changes - 5620 9.0.0836 wrong error when using extend() with funcref - 9800 9.0.0837 append() reports failure when not appending anything - 3775 9.0.0838 compiler warnings for unused variables - 1682 9.0.0839 test may fail depending on sequence of events - 2437 9.0.0840 cannot change a slice of a const list - 4209 9.0.0841 deletebufline() does not always return 1 on failure - 2874 9.0.0842 Unicode range for Apple SF symbols is outdated - 2372 9.0.0843 VHS tape files are not recognized - 14682 9.0.0844 handling 'statusline' errors is spread out - 3536 9.0.0845 shell command with just space gives strange error - 2953 9.0.0846 using assert_fails() may cause hit-enter prompt - 2615 9.0.0847 CI: not totally clear what MS-Windows version is used - 1774 9.0.0848 help item for --log argument is not aligned nicely - 9217 9.0.0849 terminal mouse test is a bit flaky - 19592 9.0.0850 MS-Windows Terminal has unstable color control - 1702 9.0.0851 terminal mouse test is still flaky - 2945 9.0.0852 crypt test is skipped if xxd is not found - 6039 9.0.0853 terminal mouse test is still flaky on MacOS M1 - 2438 9.0.0854 no proper test for what 9.0.0846 fixes - 1610 9.0.0855 comment not located above the code it refers to - 3488 9.0.0856 MS-Windows: executable not found when running test - 1748 9.0.0857 selecting MSVC 2017 does not set $PLATFORM - 4357 9.0.0858 "!!sort" in a closed fold sorts too many lines - 1452 9.0.0859 compiler warning for unused variable - 1447 9.0.0860 MS-Windows: windres fails with clang 15.0.4 - 9023 9.0.0861 solution for "!!sort" in closed fold is not optimal - 3334 9.0.0862 default value of 'endoffile' is wrong - 15740 9.0.0863 col() and charcol() only work for the current window - 3370 9.0.0864 crash when using "!!" without a previous shell command - 3418 9.0.0865 duplicate arguments are not always detected - 2288 9.0.0866 no test for what patch 8.2.2207 fixes - 17133 9.0.0867 wildmenu redrawing code is spread out - 6919 9.0.0868 MS-Windows: after Vim exits console resizing problem - 2773 9.0.0869 bogus error when string used after :elseif - 3172 9.0.0870 get E967 when using text property in quickfix window - 4228 9.0.0871 using freed memory when clearing augroup at more prompt - 8665 9.0.0872 code is indented more than needed - 4999 9.0.0873 using freed memory when executing mapclear at more prompt - 4581 9.0.0874 using freed memory when executing unmenu at more prompt - 6267 9.0.0875 using freed memory when executing delfunc at more prompt - 8530 9.0.0876 code is indented more than needed - 5872 9.0.0877 using freed memory with :comclear while listing commands - 1823 9.0.0878 Coverity warns for dead code - 1618 9.0.0879 unnecessary nesting in makefile - 12543 9.0.0880 preprocessor indenting is off - 8313 9.0.0881 cannot get the currently showing mouse shape - 2517 9.0.0882 using freed memory after SpellFileMissing autocmd uses bwipe - 2477 9.0.0883 a silent mapping may cause dots on the command line - 3820 9.0.0884 mouse shape remains in op-pending mode after failed change - 2032 9.0.0885 informational message has an error message number - 20507 9.0.0886 horizontal mouse scroll only works in the GUI - 10111 9.0.0887 cannot easily try out what codes various keys produce - 2707 9.0.0888 MS-Windows GUI: CTRL-] does not work on Swiss keyboard - 14964 9.0.0889 keycode check script has a few flaws - 4277 9.0.0890 no test for what patch 9.0.0827 fixes - 13194 9.0.0891 virtual text below after match has wrong highlight - 5879 9.0.0892 may redraw when not needed - 5729 9.0.0893 'smoothscroll' cursor calculations wrong when 'number' is set - 5100 9.0.0894 virtual text property highlight ignores window background - 1676 9.0.0895 file renamed twice in test, missing feature check - 3371 9.0.0896 test for home key fails when 'term' is "tmux" - 2303 9.0.0897 Clinical Quality Language files are not recognized - 4074 9.0.0898 with 'smoothscroll' cursor is one screen line too far down - 42751 9.0.0899 the builtin terminals are in one long list - 14743 9.0.0900 cursor moves too far with 'smoothscroll' - 7730 9.0.0901 setting w_leftcol and handling side effects is confusing - 30317 9.0.0902 some mouse scroll code is not in a good place - 10000 9.0.0903 key code checker doesn't check modifyOtherKeys resource - 16523 9.0.0904 various comment and indent flaws - 3684 9.0.0905 virtual text after the line wraps when 'wrap' is off - 10218 9.0.0906 mouse scroll code is not optimal - 8219 9.0.0907 restoring window after WinScrolled may fail - 14961 9.0.0908 with 'smoothscroll' cursor may end up in wrong position - 7001 9.0.0909 error message for layout change does not match action - 3574 9.0.0910 setting lines in another buffer may not work well - 5547 9.0.0911 with 'smoothscroll' set mouse click position may be wrong - 11512 9.0.0912 libvterm with modifyOtherKeys level 2 does not match xterm - 10168 9.0.0913 only change in current window triggers the WinScrolled event - 8339 9.0.0914 deletebufline() may move marks in the wrong window - 8232 9.0.0915 WinScrolled may trigger immediately when defined - 9192 9.0.0916 getbufline() is inefficient for getting a single line - 31022 9.0.0917 the WinScrolled autocommand event is not enough - 5015 9.0.0918 MS-Windows: modifier keys do not work with mouse scroll event - 6721 9.0.0919 build failure with tiny features - 2710 9.0.0920 cannot find an import prefixed with "s:" - 5975 9.0.0921 missing defined(PROTO) in #ifdef - 2486 9.0.0922 Mermaid files are not recognized - 3691 9.0.0923 second SIGWINCH signal may be ignored - 1651 9.0.0924 the first termcap entry of a builtin termcap is not used - 8191 9.0.0925 two conditions are always false - 1677 9.0.0926 Coverity warns for not using return value of dict_add() - 1517 9.0.0927 Coverity warns for using a NULL pointer - 3320 9.0.0928 using Ruby LDFLAGS may cause build problems - 1501 9.0.0929 build failure with tiny version - 37601 9.0.0930 cannot debug the Kitty keyboard protocol with TermDebug - 4393 9.0.0931 MS-Windows: mouse column limited to 223 - 2305 9.0.0932 Oblivion files are not recognized - 1627 9.0.0933 Kitty shows "already at oldest change" on startup - 8116 9.0.0934 various code formatting issues - 3075 9.0.0935 when using dash it may not be recognize as filetype "sh" - 2244 9.0.0936 wrong type for "isunnamed" returned by getreginfo() - 3439 9.0.0937 forked repositories send out useless email - 1489 9.0.0938 MS-Windows: debug executable not found when running test - 9897 9.0.0939 still using simplified mappings when using kitty protocol - 2690 9.0.0940 crash when typing a letter in a terminal window - 2674 9.0.0941 CI failures in sound dummy - 2037 9.0.0942 Workflow Description Language files are not recognized - 2694 9.0.0943 pretending to go out of Insert mode when Esc is received - 7508 9.0.0944 'cursorline' causes virtual text highlight to continue - 2565 9.0.0945 failures in the cursorline test - 4904 9.0.0946 CI: Error in Coverity flow is not reported - 5009 9.0.0947 invalid memory access in substitute with function - 8713 9.0.0948 'ttyfast' is set for arbitrary terminals - 34680 9.0.0949 crash when unletting a variable while listing variables - 6732 9.0.0950 the pattern "\_s\zs" matches at EOL - 5462 9.0.0951 trying every character position for a match is inefficient - 2937 9.0.0952 Eclipse preference files are not recognized - 1901 9.0.0953 part of making search more efficient is missing - 34769 9.0.0954 cannot detect whether modifyOtherKeys is enabled - 12644 9.0.0955 libvterm does not support the XTQMODKEYS request - 5568 9.0.0956 terminal tests fail when using key with modifier - 4513 9.0.0957 tests fail without the terminal feature - 3700 9.0.0958 messages test is flaky - 1712 9.0.0959 error when using the "File Settings / Text Width" menu - 2915 9.0.0960 error when using the "Spelling / Find More Languages" menu - 2537 9.0.0961 using deletebufline() may jump to another window - 5562 9.0.0962 virtual text below cannot be placed below empty lines - 4144 9.0.0963 function name does not match autocmd event name - 3220 9.0.0964 status line not redrawn when 'splitkeep' is "screen" - 55529 9.0.0965 using one window for executing autocommands is insufficient - 1810 9.0.0966 some compilers don't allow a declaration after a label - 6928 9.0.0967 leaking memory from autocmd windows - 3429 9.0.0968 GUI mouse event test is a bit flaky - 4950 9.0.0969 matchparen highlight is not updated when switching buffers - 1579 9.0.0970 Coverity warns for uninitialized variable - 8206 9.0.0971 escape sequences not recognized without termresponse feature - 13919 9.0.0972 build failure on some systems - 3912 9.0.0973 Kitty keyboard protocol key with NumLock not decoded - 4608 9.0.0974 even when Esc is encoded a timeout is used - 3196 9.0.0975 virtual text below empty line misplaced when 'number' set - 4061 9.0.0976 enabling the kitty keyboard protocol uses push/pop - 44129 9.0.0977 it is not easy to see what client-server commands are doing - 5428 9.0.0978 build errors without the +channel feature - 2949 9.0.0979 ch_log() text can be hard to find in the log file - 17841 9.0.0980 the keyboard state response may end up in a shell command - 1329 9.0.0981 build error in tiny version - 15447 9.0.0982 'cursorline' not drawn before virtual text below - 1562 9.0.0983 stray characters displayed when starting the GUI - 2477 9.0.0984 GUI: remote_foreground() does not always work - 16603 9.0.0985 when using kitty keyboard protocol function keys may not work - 1738 9.0.0986 build failure with tiny version - 1441 9.0.0987 file missing from list of distributed files - 4902 9.0.0988 using feedkeys() does not show up in a channel log - 2343 9.0.0989 popupwin test is more flaky on MacOS - 10013 9.0.0990 callback name argument is changed by setqflist() - 4158 9.0.0991 crash when reading help index with various options set - 2255 9.0.0992 Vim9 script: get E1096 when comment follows return - 14593 9.0.0993 display errors when adding or removing text property type - 3825 9.0.0994 tests for empty prop type name fail - 9164 9.0.0995 padding before virtual text is highlighted - 1984 9.0.0996 if 'keyprotocol' is empty "xterm" still uses modifyOtherKeys - 1654 9.0.0997 Coverity warns for dead code - 4856 9.0.0998 "gk" may reset skipcol when not needed - 1422 9.0.0999 memory may leak - 3551 9.0.1000 with 'smoothscroll' skipcol may be reset unnecessarily - 52789 9.0.1001 classes are not documented or implemented yet - 1477 9.0.1002 command list test fails - 1523 9.0.1003 tiny build fails - 1945 9.0.1004 suspend test sometimes fails on MacOS - 8662 9.0.1005 a failed test may leave a swap file behind - 2002 9.0.1006 suspend test still sometimes fails on MacOS - 21303 9.0.1007 there is no way to get a list of swap file names - 2777 9.0.1008 test for swapfilelist() fails on MS-Windows - 1444 9.0.1009 test for catch after interrupt is flaky on MS-Windows - 2549 9.0.1010 stray warnings for existing swap files - 2140 9.0.1011 ml_get error when using screenpos() - 1918 9.0.1012 tests may get stuck in buffer with swap file - 2408 9.0.1013 suspend test often fails on Mac OS - 2658 9.0.1014 zir files are not recognized - 2972 9.0.1015 without /dev/urandom srand() seed is too predictable - 2226 9.0.1016 screenpos() does not count filler lines for diff mode - 2310 9.0.1017 test for srand() fails on MS-Windows - 2181 9.0.1018 suspend test still fails on Mac OS - 20179 9.0.1019 'smoothscroll' and virtual text above don't work together - 1900 9.0.1020 tests call GetSwapFileList() before it is defined - 1317 9.0.1021 test trips over g:name - 2610 9.0.1022 suspend test fails on Mac OS when suspending Vim - 5046 9.0.1023 MS-Windows: dynamic loading of libsodium doesn't work - 1694 9.0.1024 CI doesn't use the latest FreeBSD version - 12645 9.0.1025 WinScrolled is not triggered when filler lines change - 2041 9.0.1026 type of w_last_topfill is wrong - 1640 9.0.1027 LGTM is soon shutting down - 9473 9.0.1028 mouse shape test is flaky, especially on Mac OS - 1500 9.0.1029 autoload directory missing from distribution - 5547 9.0.1030 using freed memory with the cmdline popup menu - 68685 9.0.1031 Vim9 class is not implemented yet - 1387 9.0.1032 test fails when terminal feature is missing - 1525 9.0.1033 tiny build fails because of conflicting typedef - 1568 9.0.1034 reporting swap file when windows are split - 19685 9.0.1035 object members are not being marked as used - 4742 9.0.1036 undo misbehaves when writing from an insert mode mapping - 2427 9.0.1037 lalloc(0) error for a class without members - 4091 9.0.1038 function name does not match what it is used for - 4861 9.0.1039 using a mapping CmdlineChanged may be triggered twice - 2367 9.0.1040 test for mapping with CmdlineChanged fails - 34754 9.0.1041 cannot define a method in a class - 1969 9.0.1042 ASAN gives false alarm about array access. - 6350 9.0.1043 macro has confusing name and is duplicated - 2716 9.0.1044 setting window height using Python may cause errors - 24554 9.0.1045 in a class object members cannot be initialized - 1741 9.0.1046 class method disassemble test fails on MS-Windows - 4885 9.0.1047 matchparen is slow - 7613 9.0.1048 with "screenline" in 'culopt' cursorline highlight is wrong - 2118 9.0.1049 crash when opening a very small terminal window - 2916 9.0.1050 using freed memory when assigning to variable twice - 2594 9.0.1051 after a failed CTRL-W ] next command splits window - 3901 9.0.1052 using freed memory on exit when EXITFREE is defined - 22945 9.0.1053 default constructor arguments are not optional - 8623 9.0.1054 object member can't get type from initializer - 1686 9.0.1055 Coverity warns for using uninitialized memory - 4841 9.0.1056 leaking memory when disassembling an object method - 2955 9.0.1057 conflict between supercollider and scala filetype detection - 4005 9.0.1058 string value of class and object do not have information - 3186 9.0.1059 build failure with some compilers - 10743 9.0.1060 private and public object members are not implemented yet - 16670 9.0.1061 cannot display 'showcmd' somewhere else - 4285 9.0.1062 some test function names do not match what they are doing - 2432 9.0.1063 when using Kitty a shell command may mess up the key state - 8990 9.0.1064 code for making 'shortmess' temporarily empty is repeated - 8027 9.0.1065 a shell command switching screens may still have a problem - 2169 9.0.1066 test function name is wrong - 6283 9.0.1067 in diff mode virtual text is highlighted incorrectly - 4244 9.0.1068 no information about whether request term codes has an effect - 2031 9.0.1069 diff mode highlight fails for special characters - 3370 9.0.1070 reading beyond array size - 2461 9.0.1071 Codecov action version is too specific - 3493 9.0.1072 screenpos() column result in fold may be too small - 5765 9.0.1073 using "xterm-kitty" for 'term' causes problems - 52002 9.0.1074 class members are not supported yet - 3542 9.0.1075 build fails if compiler doesn't allow declaration after case - 2010 9.0.1076 ASAN complains about NULL argument - 7282 9.0.1077 can add text property with negative ID before virtual text - 2573 9.0.1078 with the +vartabs feature indent folding may use wrong 'ts' - 3826 9.0.1079 leaking memory when defining a user command fails - 6684 9.0.1080 the "kitty" terminfo entry is not widespread - 4099 9.0.1081 using "->" with split lines does not always work - 4099 9.0.1082 some jsonc files are not recognized - 2369 9.0.1083 empty and comment lines in a class cause an error - 72522 9.0.1084 code handling low level MS-Windows events cannot be tested - 2473 9.0.1085 compiler warns for uninitialized variable - 4073 9.0.1086 display wrong in Windows terminal after exiting Vim - 1624 9.0.1087 autocommand test sometimes fails - 1825 9.0.1088 clang warns for unused variable - 1404 9.0.1089 unnessary assignment - 2015 9.0.1090 FHIR Shorthand files are not recognized - 3245 9.0.1091 assignment to non-existing member causes a crash - 7222 9.0.1092 search error message doesn't show used pattern - 3186 9.0.1093 using freed memory of object member - 1523 9.0.1094 compiler warning when HAS_MESSAGE_WINDOW is not defined - 2329 9.0.1095 using freed memory when declaration fails - 1435 9.0.1096 reallocating hashtab when the size didn't change - 1787 9.0.1097 tests are failing - 18179 9.0.1098 code uses too much indent - 1825 9.0.1099 trying to resize a hashtab may cause a problem - 2890 9.0.1100 a hashtab with many removed items is not cleaned up - 1707 9.0.1101 unused global variable - 1698 9.0.1102 complicated use of #ifdef - 2075 9.0.1103 jq files are not recognized - 2550 9.0.1104 invalid memory access when checking function argument types - 14738 9.0.1105 code is indented too much - 2861 9.0.1106 not all postfix files are recognized - 2740 9.0.1107 float constant not recognized as float - 26788 9.0.1108 type error when using "any" type and adding to float - 1426 9.0.1109 leaking allocated type - 3121 9.0.1110 build fails on Mac OS X 10.4/10.5 - 4520 9.0.1111 termcap entries for RGB colors are not set automatically - 40649 9.0.1112 test_mswin_event() can hang - 1553 9.0.1113 users cannot easily try out a PR - 1892 9.0.1114 CI does not use the latest Python version - 28319 9.0.1115 code is indented more than needed - 1557 9.0.1116 compiler may complain about an unused function - 3951 9.0.1117 terminfo entries for bracketed paste are not used - 2668 9.0.1118 sporadic test failures when using a terminal window - 5133 9.0.1119 type of arguments not checked when calling a partial - 2644 9.0.1120 tex filetype detection not sufficiently tested - 17738 9.0.1121 cursor positioning and display problems with 'smoothscroll' - 2336 9.0.1122 class member access is not fully tested yet - 15554 9.0.1123 class function not implemented yet - 3479 9.0.1124 virtual text at a column position is truncated - 1686 9.0.1125 memory leak when using class functions - 9363 9.0.1126 bracketed paste can be enabled when it is not recognized - 10202 9.0.1127 no error if function argument shadows class member - 2686 9.0.1128 build failure - 2633 9.0.1129 sporadic Test_range() failure - 5538 9.0.1130 unexpected output when autoloading a script - 2614 9.0.1131 build failure without the +eval feature - 52006 9.0.1132 code is indented more than needed - 28798 9.0.1133 error message names do not match the items - 12691 9.0.1134 comparing objects uses identity instead of equality - 1857 9.0.1135 missing function argument - 1458 9.0.1136 memory leak when getting class member type from expr - 2357 9.0.1137 some conditions are always false - 3384 9.0.1138 crash when expecting varargs but it is something else - 4762 9.0.1139 cannot create a new object in a compiled function - 10405 9.0.1140 cannot call an object method in a compiled function - 4701 9.0.1141 'cursorcolumn' and 'colorcolumn' wrong after concealing - 3603 9.0.1142 crash and/or memory leak when redefining function - 2094 9.0.1143 invalid memory access with bad 'statusline' value - 3839 9.0.1144 reading beyond text - 2220 9.0.1145 invalid memory access with recursive substitute expression - 18651 9.0.1146 MS-Windows: various special keys/modifiers are not mappable - 4227 9.0.1147 cannot access a class member in a compiled function - 1500 9.0.1148 cmdline test fails in the GUI - 3523 9.0.1149 class members may be garbage collected - 22923 9.0.1150 :interface is not implemented yet - 2109 9.0.1151 build failure - 14924 9.0.1152 class "implements" argument not implemented - 1689 9.0.1153 build error with some compilers - 1817 9.0.1154 Coverity warns for dead code - 3352 9.0.1155 cannot use a class as a type - 1722 9.0.1156 tests fail because of a different error message - 5132 9.0.1157 "implements" only handles one interface name -104529 9.0.1158 code is indented more than necessary - 16298 9.0.1159 extends argument for class not implemented yet - 4261 9.0.1160 ASAN error for ufunc_T allocated with wrong size - 2073 9.0.1161 Coverity warns for using strcpy() - 4487 9.0.1162 configure does not handle all FORTIFY_SOURCE variants - 1876 9.0.1163 compiler warning for implicit size_t/int conversion - 2357 9.0.1164 evaluating string expression advances function line - 7132 9.0.1165 tests using IPv6 sometimes fail - 71279 9.0.1166 code is indented more than necessary - 3586 9.0.1167 EditorConfig files do not have their own filetype - 8422 9.0.1168 code to enable/disable mouse is not from terminfo/termcap - 25135 9.0.1169 some key+modifier tests fail on some AppVeyor images - 4834 9.0.1170 LGTM badge no longer works - 3512 9.0.1171 screen is not redrawn after using setcellwidths() - 2386 9.0.1172 when 'selection' is "exclusive" then "1v" is one char short - 1659 9.0.1173 compiler warning for unused variable on non-Unix systems - 2098 9.0.1174 smali files are not recognized - 14197 9.0.1175 the set_ref_in_item() function is too long - 3110 9.0.1176 smithy files are not recognized - 3779 9.0.1177 AppVeyor uses some older tools - 14601 9.0.1178 a child class cannot override functions from a base class - 5372 9.0.1179 not all errors around inheritance are tested - 3058 9.0.1180 compiler warnings without the +job feature - 5335 9.0.1181 class inheritance and typing insufficiently tested - 2078 9.0.1182 go checksum files are not recognized - 29160 9.0.1183 code is indented more than necessary - 6037 9.0.1184 interface of an object is not recognized when checking type - 7056 9.0.1185 using class from imported script not tested - 2346 9.0.1186 imported class does not work when used twice in a line - 1622 9.0.1187 test for using imported class fails - 5834 9.0.1188 return value of type() for class and object unclear - 2168 9.0.1189 invalid memory access with folding and using "L" - 9139 9.0.1190 AppVeyor runs much slower with MSVC 2022 - 2659 9.0.1191 some Bazel files are not recognized - 3259 9.0.1192 no error when class function argument shadows a member - 3391 9.0.1193 cannot map when using the Kitty key protocol - 1808 9.0.1194 compiler warning for comparing pointer with int - 11657 9.0.1195 restoring KeyTyped when building statusline not tested - 56012 9.0.1196 code is indented more than necessary - 1394 9.0.1197 dump file missing from patch - 4690 9.0.1198 abstract class not supported yet - 3210 9.0.1199 crash when using kitty and using a mapping with - 3141 9.0.1200 AppVeyor builds with an old Python version - 4108 9.0.1201 assignment with operator doesn't work in object method - 2584 9.0.1202 crash when iterating over list of objects - 7599 9.0.1203 return type of values() is always list - 4417 9.0.1204 expression compiled the wrong way after using an object - 2853 9.0.1205 crash when handling class that extends another class - 5694 9.0.1206 testing with Python on AppVeyor does not work properly - 2884 9.0.1207 error when object type is expected but getting "any" -106340 9.0.1208 code is indented more than necessary - 14140 9.0.1209 getting interface member does not always work - 1614 9.0.1210 compiler complains about declaration after label - 6796 9.0.1211 storing value in interface member does not always work - 8468 9.0.1212 cannot read back what setcellwidths() has done - 4548 9.0.1213 adding a line below the last one does not expand fold - 1350 9.0.1214 file left behind after running tests - 3102 9.0.1215 using isalpha() adds dependency on current locale - 1897 9.0.1216 Coverity warns for ignoring return value - 2207 9.0.1217 using an object member in a closure doesn't work - 2210 9.0.1218 completion includes functions that don't work - 4577 9.0.1219 handling of FORTIFY_SOURCE flags doesn't match Fedora usage - 5273 9.0.1220 termcap/terminfo entries do not indicate possible modifiers - 63563 9.0.1221 code is indented more than necessary - 3430 9.0.1222 terminal tests are flaky on MacOS - 6587 9.0.1223 cannot use setcellwidths() below 0x100 - 24030 9.0.1224 cannot call a :def function with a number for float argument - 2385 9.0.1225 reading past the end of a line when formatting text - 4383 9.0.1226 spurious empty line when using text properties - 8179 9.0.1227 no cmdline completion for :runtime - 2843 9.0.1228 fuzzy menu completion is only tested in the GUI - 2275 9.0.1229 Cap'n Proto files are not recognized - 2119 9.0.1230 Apache thrift files are not recognized - 21477 9.0.1231 completion of :runtime does not handle {where} argument - 8307 9.0.1232 ColorTable saving and restoring does not work properly - 2341 9.0.1233 search() loops forever if "skip" is TRUE for all matches - 49698 9.0.1234 the code style has to be checked manually - 3802 9.0.1235 MS-Windows console: not flushing termguicolors - 2096 9.0.1236 code in same_leader() can be simplified - 82217 9.0.1237 code is indented more than necessary - 20339 9.0.1238 :runtime completion can be further improved - 2895 9.0.1239 cannot have a line break before an object member access - 3830 9.0.1240 cannot access a private object member in a lambda - 1593 9.0.1241 Coverity warns for not checking function return value - 6488 9.0.1242 code for :runtime completion is not consistent - 13480 9.0.1243 :setglobal cannot use script-local function for "expr" option - 2191 9.0.1244 cursor displayed in wrong position when leaving Insert mode - 69126 9.0.1245 code is indented more than necessary - 45824 9.0.1246 code is indented more than necessary - 3302 9.0.1247 divide by zero with 'smoothscroll' set and a narrow window - 2692 9.0.1248 cannot export an interface - 4145 9.0.1249 cannot export an abstract class - 13907 9.0.1250 cannot use an object method with :defer - 9117 9.0.1251 checking returned value of ga_grow() is inconsistent - 7988 9.0.1252 MS-Windows: scrollback cropped off on Vim exit - 1673 9.0.1253 CI adds repository unnecessarily - 21462 9.0.1254 calling a method on an interface does not work - 2405 9.0.1255 changing 'virtualedit' does not have immediate effect - 2953 9.0.1256 NetworkManager connection files are not recognized - 90498 9.0.1257 code style is not check in test scripts - 4335 9.0.1258 code style test fails - 4061 9.0.1259 diffmode test fails - 1785 9.0.1260 Coverity warns for possible NULL pointer usage - 1978 9.0.1261 Elsa files are not recognized -108325 9.0.1262 the did_set_string_option function is too long - 2070 9.0.1263 KDL files are not recognized - 1527 9.0.1264 Motif: compiler warning for unused argument - 2789 9.0.1265 using an interface method may give a compilation error - 4607 9.0.1266 error for space before ": type" is inconsistent - 45803 9.0.1267 the did_set_string_option function is too long - 4297 9.0.1268 .clangd and .stylelintrc files don't get a filetype - 2164 9.0.1269 channel test often fails on Mac OS - 2619 9.0.1270 crash when using search stat in narrow screen - 7365 9.0.1271 using sizeof() and subtract array size is tricky - 3272 9.0.1272 typo in pattern for filetype detection - 2482 9.0.1273 "1v" may select block with wrong size - 1944 9.0.1274 FIRRTL files are not recognized - 33922 9.0.1275 the code for setting options is too complicated - 6682 9.0.1276 some mappings with Meta and Shift do not work - 3741 9.0.1277 cursor may move with autocmd in Visual mode - 2651 9.0.1278 go.work.sum files are not recognized - 3741 9.0.1279 display shows lines scrolled down erroneously - 2452 9.0.1280 inssufficient testing for what 9.0.1265 fixes - 2009 9.0.1281 Cadence files are not recognized - 2298 9.0.1282 Ron files are not recognized - 23372 9.0.1283 the code for setting options is too complicated - 2237 9.0.1284 compiler warnings for uninitialized variables - 4511 9.0.1285 various small problems - 2757 9.0.1286 Coverity warns for using a NULL pointer - 1583 9.0.1287 with the Kitty key protocol Esc with NumLock cannot be mapped - 1973 9.0.1288 FunC files are not recognized - 3126 9.0.1289 a newer version of clang can be used for CI - 3352 9.0.1290 CTRL-N and -P on cmdline don't trigger CmdlineChanged - 2579 9.0.1291 Move language files are not recognized - 10731 9.0.1292 :defer may call the wrong method for an object - 27843 9.0.1293 the set_num_option() is too long - 36538 9.0.1294 the set_bool_option() function is too long - 24726 9.0.1295 the option initialization function is too long - 3302 9.0.1296 calling an object method with arguments does not work - 1982 9.0.1297 wrong value for $LC_CTYPE makes the environ test fail - 4437 9.0.1298 inserting register on the cmdline does not trigger incsearch - 4064 9.0.1299 change for triggering incsearch not sufficiently tested - 10452 9.0.1300 'statusline' only supports one "%=" item - 10876 9.0.1301 virtual text below empty line not displayed - 2739 9.0.1302 on a Belgian keyboard CTRL-] does not work - 3208 9.0.1303 Motif: scrollbar width/height wrong when maximized - 5471 9.0.1304 "$" for 'list' option displayed in wrong position - 3442 9.0.1305 cursor in wrong line with virtual text above - 3334 9.0.1306 no regression test for solved problem of #11959 - 6853 9.0.1307 setting 'formatoptions' with :let doesn't check for errors - 30751 9.0.1308 the code for setting options is too complicated - 17056 9.0.1309 scrolling two lines with even line count and 'scrolloff' set - 2204 9.0.1310 'splitkeep' test has failures - 1455 9.0.1311 Coverity warns for using a NULL pointer - 3770 9.0.1312 Cursor position wrong when splitting window in insert mode - 8934 9.0.1313 some settings use the current codepage instead of 'encoding' - 6431 9.0.1314 :messages behavior depends on 'fileformat' of current buffer - 3972 9.0.1315 escaping for completion of map command not properly tested - 3699 9.0.1316 MS-Windows: vimfiles dir created with admin group - 4096 9.0.1317 crash when using an unset object variable - 1914 9.0.1318 code style test fails - 1978 9.0.1319 PRQL files are not recognized - 21416 9.0.1320 checking the type of a null object causes a crash - 1613 9.0.1321 vimscript test fails where using {expr} syntax - 8302 9.0.1322 crash when indexing "any" which is an object - 1725 9.0.1323 build failure with +eval feature - 3412 9.0.1324 "gj" and "gk" do not move correctly over a closed fold - 10274 9.0.1325 'colorcolumn' highlight wrong with virtual text above - 4782 9.0.1326 relative line number not updated with virtual text above - 3553 9.0.1327 cursor in wrong position below line with virtual text below - 2888 9.0.1328 error when using "none" for GUI color is confusing - 2935 9.0.1329 completion of map includes simplified ones -334145 9.0.1330 handling new value of an option has a long "else if" chain - 2273 9.0.1331 illegal memory access when using :ball in Visual mode - 2423 9.0.1332 crash when using buffer-local user command in cmdline window - 2563 9.0.1333 when redo'ing twice may not get the script ID - 26315 9.0.1334 using tt_member for the class leads to mistakes - 3265 9.0.1335 no test for bad use of spaces in help files - 33216 9.0.1336 functions without arguments are not always declared properly - 1980 9.0.1337 yuck files are not recognized - 15614 9.0.1338 :defcompile and :disassemble can't find class method - 2243 9.0.1339 no test for :disassemble with class function - 1762 9.0.1340 Coverity warns for using NULL pointer - 2633 9.0.1341 build error with mzscheme but without GUI - 3364 9.0.1342 MS-Windows: linking may fail with space in directory name - 1708 9.0.1343 check for OSC escape sequence doesn't work - 1719 9.0.1344 check for OSC escape sequence doesn't work - 29100 9.0.1345 too many "else if" statements for handling options - 2371 9.0.1346 Starlark files are not recognized - 4368 9.0.1347 "gr CTRL-O" stays in Insert mode - 2096 9.0.1348 Un-grammar files are not recognized - 1723 9.0.1349 "gr" with a count fails - 2262 9.0.1350 CPON files are not recognized - 2098 9.0.1351 Dhall files are not recognized - 3431 9.0.1352 "ignore" files are outdated - 32810 9.0.1353 too many "else if" statements to handle option values - 2721 9.0.1354 "gr CTRL-G" stays in virtual replace mode - 3729 9.0.1355 no error when declaring a class twice - 7758 9.0.1356 cannot cancel "gr" with Esc - 7449 9.0.1357 using null_object results in an internal error - 4335 9.0.1358 compilation error with some compilers - 27252 9.0.1359 too many "else if" statements in handling options - 3035 9.0.1360 Cue files are not recognized - 2134 9.0.1361 extendnew() not sufficiently tested - 3781 9.0.1362 ml_get error when going to another tab - 3024 9.0.1363 crash when :def function has :break in skipped block - 1700 9.0.1364 build error with older Mac OS - 2266 9.0.1365 dead test code - 93919 9.0.1366 functions for setting options are in random order - 4727 9.0.1367 divide by zero in zero-width window - 2271 9.0.1368 Bass files are not recognized - 35571 9.0.1369 still some "else if" constructs for setting options - 2330 9.0.1370 crash when using a NULL object - 5603 9.0.1371 ballooneval interferes with Insert completion - 1552 9.0.1372 test for 'toolbariconsize' may fail - 2878 9.0.1373 wrong text displayed when using both 'linebreak' and 'list' - 35878 9.0.1374 function for setting options not used consistently - 2801 9.0.1375 crash when getting member of obj of unknown class - 2624 9.0.1376 accessing invalid memory with put in Visual block mode - 2083 9.0.1377 job_status() may return "dead" if the process parent changed - 1883 9.0.1378 illegal memory access when using virtual editing - 86479 9.0.1379 functions for handling options are not ordered - 14186 9.0.1380 CTRL-X on 2**64 subtracts two - 4444 9.0.1381 ACCESS_ names have a conflict with on some systems - 2290 9.0.1382 failing test for strptime() doesn't show returned value - 3322 9.0.1383 xxd: combination of little endian and cols fails - 1533 9.0.1384 setting HOMEBREW_NO_AUTO_UPDATE is not needed with version 4 - 4721 9.0.1385 g'Esc is considered an error - 2458 9.0.1386 options test fails with some window width - 1637 9.0.1387 scrollbar test sporadically fails - 1583 9.0.1388 Amiga: not all builds use gethostname() - 2175 9.0.1389 Amiga: a couple of include files are included twice - 35427 9.0.1390 FOR_ALL_ macros are defined in an unexpected file - 19230 9.0.1391 "clear" macros are not always used - 6145 9.0.1392 using NULL pointer with nested :open command - 2253 9.0.1393 Cairo files are not recognized - 2069 9.0.1394 Unx Tal files are not recognized - 2137 9.0.1395 Odin files are not recognized - 6768 9.0.1396 sort(list, 'N') does not work in Vim9 script context - 17681 9.0.1397 highlight for popupmenu kind and extra cannot be set - 23658 9.0.1398 profile test repeats the headers many times - 9320 9.0.1399 highlight test script has a few problems - 20504 9.0.1400 find_file_in_path() is not reentrant - 2384 9.0.1401 condition is always true - 2022 9.0.1402 crash when using null_class - 16119 9.0.1403 unused variables and functions - 1944 9.0.1404 compilation error with some compilers - 3140 9.0.1405 missing check for out-of-memory - 1878 9.0.1406 ILE RPG files are not recognized - 2330 9.0.1407 TableGen files are not recognized - 2359 9.0.1408 QMLdir files are not recognized - 3511 9.0.1409 racket files are recognized as scheme - 32822 9.0.1410 MacOS: sed fails on .po files - 18704 9.0.1411 accuracy of profiling is not optimal - 2310 9.0.1412 Pony files are not recognized - 2629 9.0.1413 compiler warning for unused variable - 2619 9.0.1414 in Kitty does not use the Shift modifier - 2047 9.0.1415 Crystal files are not recognized - 8420 9.0.1416 crash when collection is modified when using filter() - 2177 9.0.1417 ESDL files are not recognized - 30354 9.0.1418 the included xdiff code is a bit outdated - 1948 9.0.1419 Lean files are not recognized - 1609 9.0.1420 build failure because SIZE_MAX is not defined - 2665 9.0.1421 Nu files are not recognized - 1924 9.0.1422 Sage files are not recognized - 2041 9.0.1423 WebAssembly Interface Type files are not recognized - 1746 9.0.1424 unused macros are defined - 2367 9.0.1425 "wat" and "wast" files are one filetype - 3011 9.0.1426 indent wrong after "export namespace" in C++ - 1814 9.0.1427 warning for uninitialized variable - 3988 9.0.1428 cursor in wrong position when leaving insert mode - 2155 9.0.1429 invalid memory access when ending insert mode - 2480 9.0.1430 Livebook files are not recognized - 4920 9.0.1431 getscriptinfo() loops even when specific SID is given - 4346 9.0.1432 completion popup in wrong position with virtual text "above" - 3439 9.0.1433 on some systems the Lua library is not found - 2731 9.0.1434 crash when adding package already in 'runtimepath' - 2256 9.0.1435 scrolling too many lines when 'wrap' and 'diff' are set - 4449 9.0.1436 cannot compare a typed variable with v:none - 2376 9.0.1437 test fails with different error number - 3134 9.0.1438 .fs files are falsely recognized as forth files - 3987 9.0.1439 start Insert mode when accessing a hidden prompt buffer - 2651 9.0.1440 "rvim" can execute a shell through :diffpatch - 3147 9.0.1441 MacOS: Python 3 using framework do not set dll name properly - 4125 9.0.1442 mapset() does not restore non-script context - 3584 9.0.1443 ending Insert mode when accessing a hidden prompt buffer - 2519 9.0.1444 crash when passing NULL to setcmdline() - 5465 9.0.1445 openSUSE: configure doesn't find the Motif library - 4254 9.0.1446 unnecessary checks for the "skip" flag when skipping - 5489 9.0.1447 condition is always true - 1614 9.0.1448 diff test fails on MacOS 13 - 2485 9.0.1449 test for prompt buffer is flaky - 7678 9.0.1450 MacOS: building fails if clock_gettime() is not available - 2233 9.0.1451 unnecessary redrawing when 'showcmdloc' is not "last" - 5395 9.0.1452 code using EVAL_CONSTANT is dead, it is never set - 11114 9.0.1453 typos in source code and tests - 16731 9.0.1454 code indenting is confused by macros - 2904 9.0.1455 C++ 20 modules are not recognized - 1533 9.0.1456 shortmess test depends on order of test execution - 2022 9.0.1457 no regression test for what patch 9.0.1333 fixes - 2855 9.0.1458 buffer overflow when expanding long file name - 5419 9.0.1459 typo in name of type - 3340 9.0.1460 insufficient testing for getcmdcompltype() - 3739 9.0.1461 ruler not drawn correctly when using 'rulerformat' - 3424 9.0.1462 recursively calling :defer function if it does :qa - 7105 9.0.1463 virtual text truncation only works with Unicode 'encoding' - 2492 9.0.1464 strace filetype detection is expensive - 1315 9.0.1465 Haiku build fails - 4688 9.0.1466 cannot use an object member name as a method argument - 3375 9.0.1467 Jenkinsfiles are not recognized as groovy - 5659 9.0.1468 recursively calling :defer function if it does :qa - 3757 9.0.1469 deferred functions not called from autocommands - 4567 9.0.1470 deferred functions invoked in unexpected order - 8745 9.0.1471 warnings for function declarations - 2785 9.0.1472 ":drop fname" may change the last used tab page - 6088 9.0.1473 CI does not run sound tests - 6544 9.0.1474 CI runs with old version of Ubuntu and tools - 2735 9.0.1475 busted configuration files are not recognized -146210 9.0.1476 lines put in non-current window are not displayed - 6336 9.0.1477 crash when recovering from corrupted swap file - 4502 9.0.1478 filetypes for *.v files not detected properly - 13467 9.0.1479 small source file problems; outdated list of distrib. files - 3561 9.0.1480 using popup menu may leave text in the command line - 46058 9.0.1481 decrypting with libsodium may fail if the library changes - 3107 9.0.1482 crash when textprop has a very large "padding" value - 4433 9.0.1483 += operator does not work on class member - 3761 9.0.1484 Coverity warns for using invalid array index - 44419 9.0.1485 no functions for converting from/to UTF-16 index - 7210 9.0.1486 parallel make might not work - 6187 9.0.1487 Content-type header for LSP channel not according to spec - 13432 9.0.1488 xchacha20v2 crypt header is platform dependent - 7615 9.0.1489 crypt with libsodium is not tested on CI - 4831 9.0.1490 the ModeChanged event may be triggered too often - 3986 9.0.1491 wrong scrolling with ls=0 and :botright split - 3735 9.0.1492 using uninitialized memory when argument is missing - 4832 9.0.1493 popup menu position wrong in window with toolbar - 5368 9.0.1494 crash when recovering from corrupted swap file - 1801 9.0.1495 GTK3: hiding the mouse pointer does not work - 1849 9.0.1496 test restoring register with wrong value - 2939 9.0.1497 the ruler percentage can't be localized - 3227 9.0.1498 in a terminal window the cursor may jump around - 5808 9.0.1499 using uninitialized memory with fuzzy matching - 2087 9.0.1500 The falsy operator is not tested properly - 5401 9.0.1501 crash with nested :try and :throw in catch block - 3221 9.0.1502 no test for deleting the end of a long wrapped line - 2089 9.0.1503 Luau files are not recognized - 4440 9.0.1504 no error when calling remote_startserver("") - 10660 9.0.1505 error when heredoc content looks like heredoc - 8212 9.0.1506 line number not displayed when using 'smoothscroll' - 7346 9.0.1507 assert message is confusing with boolean result - 3136 9.0.1508 catch does not work when lines are joined with a newline - 2263 9.0.1509 error message lacks mentioning the erroneous argument - 3486 9.0.1510 misleading variable name for error message - 4929 9.0.1511 crash when using wrong arg types to assert_match() - 5477 9.0.1512 inserting lines when scrolling with 'smoothscroll' set - 4203 9.0.1513 text scrolls unnecessarily when splitting - 1629 9.0.1514 test waits unnecessarily long before checking screendump - 8641 9.0.1515 reverse() does not work for a String - 7109 9.0.1516 cannot use special keys in mapping - 5117 9.0.1517 MacOS: configure removes -O2 from $CFLAGS - 7424 9.0.1518 search stats not always visible when searching backwards - 17356 9.0.1519 global 'filetype' is set when detected from file content - 6413 9.0.1520 completion for option name includes all bool options - 4499 9.0.1521 failing redo of command with control characters - 5122 9.0.1522 some functions give two error messages - 2526 9.0.1523 some error messages are not marked for translation - 5969 9.0.1524 passing -1 for bool is not always rejected - 8938 9.0.1525 'smoothscroll' does not always work properly - 3380 9.0.1526 condition is always true - 3118 9.0.1527 crash when using negative value for term_cols - 1576 9.0.1528 libsodium encryption is only used with "huge" features - 7225 9.0.1529 code style test doesn't check for space after "if" - 7689 9.0.1530 cursor moves to wrong line when 'foldmethod' is "diff" - 3027 9.0.1531 crash when register contents ends up being invalid - 4668 9.0.1532 crash when expanding "~" in substitute causes very long text - 4623 9.0.1533 test for 'smoothscroll' is ineffective - 2282 9.0.1534 test for expanding "~" in substitute takes too long - 2318 9.0.1535 test commented out in a wrong way - 2993 9.0.1536 CI: sound dummy stopped working - 3049 9.0.1537 message for opening the cmdline window is not translated - 4314 9.0.1538 :wqall does not trigger ExitPre - 5461 9.0.1539 typst filetype is not recognized - 9207 9.0.1540 reverse() on string doesn't work in compiled function - 3264 9.0.1541 CI: sound dummy is disabled - 4354 9.0.1542 line not fully displayed if it doesn't fit in the screen - 10337 9.0.1543 display errors when making topline shorter - 26213 9.0.1544 recent glibc marks sigset() as a deprecated - 2426 9.0.1545 text not scrolled when cursor moved with "g0" and "h" - 7589 9.0.1546 some commands for opening a file don't use 'switchbuf' - 3078 9.0.1547 Coveralls workflow on CI is commented out - 2578 9.0.1548 CI: check in sound-dummy module may throw an error - 2698 9.0.1549 USD filetype is not recognized - 2717 9.0.1550 in cmdline window S-Tab does not select previous completion - 8446 9.0.1551 position of marker for 'smoothscroll' not computed correctly - 3006 9.0.1552 CI: sound-dummy module is not installed - 2308 9.0.1553 CI: using slightly outdated gcc version - 6368 9.0.1554 code for handling 'switchbuf' is repeated - 3551 9.0.1555 setcharsearch() does not clear last searched char properly - 2303 9.0.1556 Vim9: error for missing "return" after "throw" - 6423 9.0.1557 test failures for unreachable code - 5718 9.0.1558 wrong error for unreachable code after :throw - 6620 9.0.1559 function argument types not always checked - 5061 9.0.1560 Win32: When 'encoding' is set $PATH has duplicate entries - 7462 9.0.1561 display wrong when moving cursor to above the top line - 2470 9.0.1562 mixing package managers is not a good idea - 2093 9.0.1563 GTK3: window manager resize hints are incomplete - 4589 9.0.1564 display moves up and down with 'incsearch' and 'smoothscroll' - 2166 9.0.1565 json lines files are not recognized - 2124 9.0.1566 Motif: GUI scrollbar test fails in 24 lines terminal - 2086 9.0.1567 profiler calculation may be wrong on 32 bit builds - 9580 9.0.1568 with 'smoothscroll' cursor may move below botline - 5488 9.0.1569 cannot use "this.member" in lambda in class method - 83083 9.0.1570 some tests are slow - 22802 9.0.1571 RedrawingDisabled not used consistently - 21449 9.0.1572 error messages are not translated - 2053 9.0.1573 error for function name has wrong line number - 6459 9.0.1574 MS-Windows: list of translation input files incomplete - 2381 9.0.1575 "file N of M" message is not translated - 22118 9.0.1576 users may not know what to do with an internal error - 19768 9.0.1577 MS-Windows: context menu translations may be wrong - 14033 9.0.1578 SpellCap highlight not always updated when needed - 7083 9.0.1579 some error messages are not translated - 2250 9.0.1580 CI: indent test hangs on FreeBSD - 11347 9.0.1581 translation does not work for plural argument - 3082 9.0.1582 :stopinsert may not work in a popup close handler - 22942 9.0.1583 get E304 when using 'cryptmethod' "xchacha20v2" - 3543 9.0.1584 not all meson files are recognized - 15757 9.0.1585 weird use of static variables for spell checking - 2923 9.0.1586 error for using two messages with ngettext() differing in "%" - 2231 9.0.1587 Corn config files are not recognized - 2538 9.0.1588 Incsearch not triggered when pasting clipboard register - 93794 9.0.1589 filetype test contains too many special characters - 1767 9.0.1590 filetype test has trailing white space - 2506 9.0.1591 some "gomod" files are not recognized - 2946 9.0.1592 not all timer tests are marked as flaky - 3317 9.0.1593 MS-Windows: assert error when compiled with debug mode - 42607 9.0.1594 some internal error messages are translated - 9015 9.0.1595 line pointer becomes invalid when using spell checking - 2534 9.0.1596 :registers command does not work in sandbox - 4531 9.0.1597 cursor ends up below the window after a put - 7852 9.0.1598 screenchar() and others are wrong with DBCS 'encoding' - 16484 9.0.1599 Cursor not adjusted when 'splitkeep' is not "cursor" - 3210 9.0.1600 screenpos() does not take w_skipcol into account - 3354 9.0.1601 filetype detection fails for *.conf file without comments - 5533 9.0.1602 stray character visible if marker on top of double-wide char - 4553 9.0.1603 display wrong if scrolling multiple lines with 'smoothscroll' - 7819 9.0.1604 errors from the codestyle test are a bit confusing - 3198 9.0.1605 crash when calling method on super in child constructor - 3720 9.0.1606 using freed memory when 'foldcolumn' is set - 4792 9.0.1607 screenpos() returns wrong row with diff filler lines - 2305 9.0.1608 update_topline() is called twice - 3892 9.0.1609 crash when an object indirectly references itself - 4765 9.0.1610 display is wrong when 'smoothscroll' is set - 2038 9.0.1611 v:maxcol can be changed in a :for loop - 3201 9.0.1612 "skipcol" not reset when using multi-byte characters - 3687 9.0.1613 some make output gets picked up by 'errorformat' - 4091 9.0.1614 strlen() called too often for :spellrepall - 2627 9.0.1615 URL shortcut files are not recognized - 7074 9.0.1616 quickfix text field is truncated - 30480 9.0.1617 charidx() result is not consistent with byteidx() - 1891 9.0.1618 Trace32 files are not recognized - 2801 9.0.1619 the focus gained/lost escape sequences cause trouble - 3271 9.0.1620 Nix files are not recognized from the hashbang line - 5775 9.0.1621 FILETYPE_FILE is defined to the same value multiple times - 2410 9.0.1622 filetype name t32 is a bit obscure - 14787 9.0.1623 the program to filetype translation is not exported - 5183 9.0.1624 crash when calling object constructor - 3843 9.0.1625 "super" is not considered a reserved name - 4084 9.0.1626 Visual area not shown when using 'showbreak' - 30553 9.0.1627 no generic mechanism to test syntax plugins - 2986 9.0.1628 syntax tests fail on FreeBSD - 5558 9.0.1629 having utf16idx() rounding up is inconvenient - 1842 9.0.1630 "make clean" at the toplevel fails - 16874 9.0.1631 passing wrong variable type to option gives multiple errors - 7622 9.0.1632 not all cabal config files are recognized - 2782 9.0.1633 duplicate code for converting float to string - 4106 9.0.1634 message is cleared when removing mode message - 4538 9.0.1635 error message is cleared when removing mode message - 5071 9.0.1636 expanding a pattern interferes with cmdline completion - 2908 9.0.1637 compiler warning for uninitialized variable - 2730 9.0.1638 crypt tests hang and cause memory errors - 2950 9.0.1639 build failure without the crypt feature - 2917 9.0.1640 compiler warning for unused variables without crypt feature - 4085 9.0.1641 the log file does not give information about window sizes - 2843 9.0.1642 build failure with tiny features - 2383 9.0.1643 filetype detection fails if file name ends in many '~' - 2283 9.0.1644 not all filetype file name matches are tested - 2215 9.0.1645 zserio files are not recognized - 1750 9.0.1646 CI: codecov may take a very long time to run -180457 9.0.1647 insufficient testing for syntax plugins - 4510 9.0.1648 result of syntax tests is hard to see - 1660 9.0.1649 syntax test failure causes script to abort - 3265 9.0.1650 MS-Windows: default 'viewdir' may include read-only directory - 1812 9.0.1651 unclear why syntax test fails on Mac - 1984 9.0.1652 unclear why syntax test fails on Mac - 3629 9.0.1653 Amiga: default 'viewdir' may not work - 1874 9.0.1654 MS-Windows: test for default 'viewdir' fails - 1728 9.0.1655 syntax test fails when Vim window is not tall enough - 22058 9.0.1656 syntax test fails when detected shell type differs - 2749 9.0.1657 one more syntax test depends on the system - 4550 9.0.1658 autoload files for "zig" are not installed - 3465 9.0.1659 Termdebug: default highlight cleared if changing colorscheme - 4091 9.0.1660 error for using matchfuzzy() returning a list of dicts - 3041 9.0.1661 BUCK files are not recognized - 2545 9.0.1662 crash when using a class member twice - 5301 9.0.1663 Termdebug on MS-Windows: some file names are not recognized - 4425 9.0.1664 divide by zero when scrolling with 'smoothscroll' set - 2996 9.0.1665 empty CmdlineEnter autocommand causes errors in Ex mode - 1546 9.0.1666 compiler may warn for uninitialized variable - 3981 9.0.1667 regression test doesn't fail when fix is reverted - 2085 9.0.1668 PEM files are not recognized - 7173 9.0.1669 Crash syncing swapfile in new buffer when using sodium crypt - 3751 9.0.1670 resetting local option to global value is inconsistent - 4189 9.0.1671 Termdebug: error with more than 99 breakpoints - 3897 9.0.1672 tabline highlight wrong after truncated double width label diff --git a/debian/control b/debian/control index 016a94a0..3baecdde 100644 --- a/debian/control +++ b/debian/control @@ -1,11 +1,9 @@ Source: vim Section: editors -Priority: optional Maintainer: Debian Vim Maintainers Uploaders: James McCoy , -Standards-Version: 4.7.0 -Rules-Requires-Root: no +Standards-Version: 4.7.3 Build-Depends: autoconf, cscope , diff --git a/debian/copyright b/debian/copyright index d828e8df..bb159678 100644 --- a/debian/copyright +++ b/debian/copyright @@ -68,6 +68,7 @@ Files: runtime/indent/astro.vim runtime/indent/glsl.vim runtime/indent/graphql.vim + runtime/indent/handlebars.vim runtime/indent/julia.vim runtime/indent/just.vim runtime/indent/nu.vim @@ -77,6 +78,7 @@ Files: runtime/syntax/bitbake.vim runtime/syntax/glsl.vim runtime/syntax/graphql.vim + runtime/syntax/handlebars.vim runtime/syntax/jq.vim runtime/syntax/json.vim runtime/syntax/jsonc.vim @@ -117,6 +119,8 @@ Copyright: 2015-2017 Samsung Electronics Co., Ltd 2015-2017 Red Hat Inc. 2014 John Hawthorn + 2026 Devin Weaver + 2015 Jouke van der Maas License: Expat Files: runtime/syntax/tmux.vim diff --git a/debian/patches/Revert-patch-9.1.0949-popups-inconsistently-shifted-to-th.patch b/debian/patches/Revert-patch-9.1.0949-popups-inconsistently-shifted-to-th.patch index b4218458..73b5a717 100644 --- a/debian/patches/Revert-patch-9.1.0949-popups-inconsistently-shifted-to-th.patch +++ b/debian/patches/Revert-patch-9.1.0949-popups-inconsistently-shifted-to-th.patch @@ -12,14 +12,13 @@ Closes: #1091729 runtime/doc/popup.txt | 1 + src/popupwin.c | 23 ++++++++++++----------- src/testdir/test_popupwin.vim | 26 ++++++-------------------- - src/version.c | 2 -- - 4 files changed, 19 insertions(+), 33 deletions(-) + 3 files changed, 19 insertions(+), 31 deletions(-) diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt -index 41f4da5..8c6bc32 100644 +index e968a21..af485cf 100644 --- a/runtime/doc/popup.txt +++ b/runtime/doc/popup.txt -@@ -713,6 +713,7 @@ The second argument of |popup_create()| is a dictionary with options: +@@ -714,6 +714,7 @@ The second argument of |popup_create()| is a dictionary with options: present. Use zero to reset. fixed When FALSE (the default), and: - "pos" is "botleft" or "topleft", and @@ -28,10 +27,10 @@ index 41f4da5..8c6bc32 100644 the screen, then the popup is moved to the left so as to fit the diff --git a/src/popupwin.c b/src/popupwin.c -index 96f669a..53e2e86 100644 +index fe06777..9ffe2ba 100644 --- a/src/popupwin.c +++ b/src/popupwin.c -@@ -1443,7 +1443,17 @@ popup_adjust_position(win_T *wp) +@@ -1501,7 +1501,17 @@ popup_adjust_position(win_T *wp) len = linetabsize(wp, lnum); wp->w_width = w_width; @@ -50,7 +49,7 @@ index 96f669a..53e2e86 100644 && allow_adjust_left && (wp->w_popup_pos == POPPOS_TOPLEFT || wp->w_popup_pos == POPPOS_BOTLEFT)) -@@ -1455,6 +1465,7 @@ popup_adjust_position(win_T *wp) +@@ -1513,6 +1523,7 @@ popup_adjust_position(win_T *wp) { int truncate_shift = shift_by - wp->w_wincol; @@ -58,7 +57,7 @@ index 96f669a..53e2e86 100644 shift_by -= truncate_shift; } -@@ -1462,16 +1473,6 @@ popup_adjust_position(win_T *wp) +@@ -1520,16 +1531,6 @@ popup_adjust_position(win_T *wp) maxwidth += shift_by; wp->w_width = maxwidth; } @@ -76,7 +75,7 @@ index 96f669a..53e2e86 100644 { wp->w_width = len + margin_width; diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim -index 4b616a8..6894aba 100644 +index 41cd6f0..b24733f 100644 --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -29,7 +29,7 @@ func Test_simple_popup() @@ -97,7 +96,7 @@ index 4b616a8..6894aba 100644 call popup_create('right aligned text', #{line: 11, col: 56, wrap: 0, padding: [0, 3, 0, 3], border: [0, 1, 0, 1]}) call popup_create('X', #{line: 2, col: 73}) call popup_create('X', #{line: 3, col: 74}) -@@ -1969,7 +1969,7 @@ func Test_popup_position_adjust() +@@ -1974,7 +1974,7 @@ func Test_popup_position_adjust() " Anything placed past the last cell on the right of the screen is moved to " the left. " @@ -106,7 +105,7 @@ index 4b616a8..6894aba 100644 " screen, unless fixed is set. " Entries for cases which don't vary based on wrapping. -@@ -1994,10 +1994,9 @@ func Test_popup_position_adjust() +@@ -1999,10 +1999,9 @@ func Test_popup_position_adjust() " - expected height let tests = [ \ #{ @@ -118,7 +117,7 @@ index 4b616a8..6894aba 100644 \ pos: 'botleft', \ }, \ tests: both_wrap_tests + [ -@@ -2022,22 +2021,9 @@ func Test_popup_position_adjust() +@@ -2027,22 +2026,9 @@ func Test_popup_position_adjust() \ ], \ }, \ #{ @@ -142,7 +141,7 @@ index 4b616a8..6894aba 100644 \ pos: 'botleft', \ }, \ tests: both_wrap_tests + [ -@@ -2061,7 +2047,7 @@ func Test_popup_position_adjust() +@@ -2066,7 +2052,7 @@ func Test_popup_position_adjust() \ ], \ }, \ #{ @@ -151,16 +150,3 @@ index 4b616a8..6894aba 100644 \ options: #{ \ wrap: 0, \ fixed: 1, -diff --git a/src/version.c b/src/version.c -index 2526c09..92397ee 100644 ---- a/src/version.c -+++ b/src/version.c -@@ -2578,8 +2578,6 @@ static int included_patches[] = - 951, - /**/ - 950, --/**/ -- 949, - /**/ - 948, - /**/ diff --git a/debian/patches/Set-NoDisplay-true-for-vim-desktop.patch b/debian/patches/Set-NoDisplay-true-for-vim-desktop.patch deleted file mode 100644 index 62f7cbda..00000000 --- a/debian/patches/Set-NoDisplay-true-for-vim-desktop.patch +++ /dev/null @@ -1,36 +0,0 @@ -From: Tianyu Chen -Date: Thu, 15 Jan 2026 10:17:18 +0800 -Subject: Set NoDisplay=true for vim.desktop - -Origin: vendor -Bug-deepin: https://pms.uniontech.com/bug-view-285241.html -Forwarded: not-needed ---- - runtime/vim.desktop | 1 + - src/po/vim.desktop.in | 1 + - 2 files changed, 2 insertions(+) - -diff --git a/runtime/vim.desktop b/runtime/vim.desktop -index a8672cb..715d071 100644 ---- a/runtime/vim.desktop -+++ b/runtime/vim.desktop -@@ -111,6 +111,7 @@ Comment[zh_TW]=編輯文字檔 - TryExec=vim - Exec=vim %F - Terminal=true -+NoDisplay=true - Type=Application - # Translators: Search terms to find this application. Do NOT change the semicolons! The list MUST also end with a semicolon! - Keywords[ca]=Text;editor; -diff --git a/src/po/vim.desktop.in b/src/po/vim.desktop.in -index 874fa6a..958f66e 100644 ---- a/src/po/vim.desktop.in -+++ b/src/po/vim.desktop.in -@@ -69,6 +69,7 @@ Comment[zh_TW]=編輯文字檔 - TryExec=vim - Exec=vim %F - Terminal=true -+NoDisplay=true - Type=Application - # Translators: Search terms to find this application. Do NOT change the semicolons! The list MUST also end with a semicolon! - Keywords=Text;editor; diff --git a/debian/patches/debian/Add-recognition-of-more-LaTeX-commands-for-tex-filetype-d.patch b/debian/patches/debian/Add-recognition-of-more-LaTeX-commands-for-tex-filetype-d.patch index 88957622..2579d6b8 100644 --- a/debian/patches/debian/Add-recognition-of-more-LaTeX-commands-for-tex-filetype-d.patch +++ b/debian/patches/debian/Add-recognition-of-more-LaTeX-commands-for-tex-filetype-d.patch @@ -13,10 +13,10 @@ Signed-off-by: James McCoy 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim -index 6131cf5..23f91e0 100644 +index a90655f..604f8f7 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim -@@ -1274,7 +1274,7 @@ export def FTtex() +@@ -1317,7 +1317,7 @@ export def FTtex() var firstNC = search('^\s*[^[:space:]%]', 'c', 1000) if firstNC > 0 # Check the next thousand lines for a LaTeX or ConTeXt keyword. diff --git a/debian/patches/debian/Detect-the-rst-filetype-using-the-contents-of-the-file.patch b/debian/patches/debian/Detect-the-rst-filetype-using-the-contents-of-the-file.patch index 5b9cae29..6539ff96 100644 --- a/debian/patches/debian/Detect-the-rst-filetype-using-the-contents-of-the-file.patch +++ b/debian/patches/debian/Detect-the-rst-filetype-using-the-contents-of-the-file.patch @@ -8,10 +8,10 @@ Closes: #382541 1 file changed, 8 insertions(+) diff --git a/runtime/autoload/dist/script.vim b/runtime/autoload/dist/script.vim -index 5fb45cc..e3d84e2 100644 +index de168f0..f2b273f 100644 --- a/runtime/autoload/dist/script.vim +++ b/runtime/autoload/dist/script.vim -@@ -426,6 +426,14 @@ def DetectFromText(line1: string) +@@ -430,6 +430,14 @@ def DetectFromText(line1: string) elseif line1 =~ 'exec\s\+\S*scheme' || line2 =~ 'exec\s\+\S*scheme' setl ft=scheme diff --git a/debian/patches/debian/Document-Debian-s-decision-to-disable-modelines-by-defaul.patch b/debian/patches/debian/Document-Debian-s-decision-to-disable-modelines-by-defaul.patch index bb703b5d..9b835760 100644 --- a/debian/patches/debian/Document-Debian-s-decision-to-disable-modelines-by-defaul.patch +++ b/debian/patches/debian/Document-Debian-s-decision-to-disable-modelines-by-defaul.patch @@ -15,10 +15,10 @@ Signed-off-by: James McCoy 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt -index 837edfe..e240bb4 100644 +index bddfa99..6b3438b 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt -@@ -6129,7 +6129,7 @@ A jump table for the options with a short description can be found at |Q_op|. +@@ -6145,7 +6145,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'modeline'* *'ml'* *'nomodeline'* *'noml'* 'modeline' 'ml' boolean (Vim default: on (off for root), diff --git a/debian/patches/debian/Support-sourcing-a-vimrc.tiny-when-Vim-is-invoked-as-vi.patch b/debian/patches/debian/Support-sourcing-a-vimrc.tiny-when-Vim-is-invoked-as-vi.patch index 7138f701..a242fd98 100644 --- a/debian/patches/debian/Support-sourcing-a-vimrc.tiny-when-Vim-is-invoked-as-vi.patch +++ b/debian/patches/debian/Support-sourcing-a-vimrc.tiny-when-Vim-is-invoked-as-vi.patch @@ -17,42 +17,42 @@ Signed-off-by: James Vega 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c -index d3730fe..a913f1d 100644 +index 9f9fd12..9ae001d 100644 --- a/src/main.c +++ b/src/main.c -@@ -2050,6 +2050,10 @@ parse_command_name(mparm_T *parmp) +@@ -2056,6 +2056,10 @@ parse_command_name(mparm_T *parmp) } else if (STRNICMP(initstr, "vim", 3) == 0) initstr += 3; -+#ifdef SYS_TINYRC_FILE ++# ifdef SYS_TINYRC_FILE + else if (STRNICMP(initstr, "vi", 2) == 0) + parmp->vi_mode = TRUE; -+#endif ++# endif // Catch "[r][g]vimdiff" and "[r][g]viewdiff". if (STRICMP(initstr, "diff") == 0) -@@ -3369,7 +3373,12 @@ source_startup_scripts(mparm_T *parmp) +@@ -3378,7 +3382,12 @@ source_startup_scripts(mparm_T *parmp) * Get system wide defaults, if the file name is defined. */ - #ifdef SYS_VIMRC_FILE + # ifdef SYS_VIMRC_FILE - (void)do_source((char_u *)SYS_VIMRC_FILE, FALSE, DOSO_NONE, NULL); -+# if defined(SYS_TINYRC_FILE) && defined(TINY_VIMRC) ++# if defined(SYS_TINYRC_FILE) && defined(TINY_VIMRC) + if (parmp->vi_mode) + (void)do_source((char_u *)SYS_TINYRC_FILE, FALSE, DOSO_NONE, NULL); + else -+# endif ++# endif + (void)do_source((char_u *)SYS_VIMRC_FILE, FALSE, DOSO_NONE, NULL); - #endif - #ifdef MACOS_X + # endif + # ifdef MACOS_X (void)do_source((char_u *)"$VIMRUNTIME/macmap.vim", FALSE, -@@ -3412,13 +3421,25 @@ source_startup_scripts(mparm_T *parmp) - #ifdef USR_EXRC_FILE2 +@@ -3421,13 +3430,25 @@ source_startup_scripts(mparm_T *parmp) + # ifdef USR_EXRC_FILE2 && do_source((char_u *)USR_EXRC_FILE2, FALSE, DOSO_NONE, NULL) == FAIL -+#endif -+#if defined(SYS_TINYRC_FILE) && defined(TINY_VIMRC) ++# endif ++# if defined(SYS_TINYRC_FILE) && defined(TINY_VIMRC) + && !parmp->vi_mode - #endif + # endif && !has_dash_c_arg) { // When no .vimrc file was found: source defaults.vim. @@ -64,18 +64,18 @@ index d3730fe..a913f1d 100644 + * don't want to error due to missing defaults.vim. That's provided by + * vim-runtime, which isn't typically installed with vim-tiny. + */ -+#ifndef TINY_VIMRC ++# ifndef TINY_VIMRC emsg(_(e_failed_to_source_defaults)); -+#endif ++# endif + } } } diff --git a/src/os_unix.h b/src/os_unix.h -index 145a404..ff205f9 100644 +index a507392..d1f7ea1 100644 --- a/src/os_unix.h +++ b/src/os_unix.h -@@ -203,6 +203,9 @@ typedef struct dsc$descriptor DESC; +@@ -187,6 +187,9 @@ typedef struct dsc$descriptor DESC; /* * Unix system-dependent file names */ @@ -86,10 +86,10 @@ index 145a404..ff205f9 100644 # define SYS_VIMRC_FILE "$VIM/vimrc" #endif diff --git a/src/structs.h b/src/structs.h -index c64ca82..20c67e8 100644 +index 2b8cb3d..69bcbaf 100644 --- a/src/structs.h +++ b/src/structs.h -@@ -4747,6 +4747,9 @@ typedef struct +@@ -4811,6 +4811,9 @@ typedef struct #ifdef FEAT_DIFF int diff_mode; // start with 'diff' set #endif diff --git a/debian/patches/series b/debian/patches/series index 567810f1..ebea3657 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -3,4 +3,3 @@ debian/Detect-the-rst-filetype-using-the-contents-of-the-file.patch debian/Add-recognition-of-more-LaTeX-commands-for-tex-filetype-d.patch debian/Document-Debian-s-decision-to-disable-modelines-by-defaul.patch Revert-patch-9.1.0949-popups-inconsistently-shifted-to-th.patch -Set-NoDisplay-true-for-vim-desktop.patch diff --git a/debian/rules b/debian/rules index 5d9860f8..fa73b60a 100755 --- a/debian/rules +++ b/debian/rules @@ -37,7 +37,7 @@ else endif # Set to TEST_SKIP_PAT= to exclude running tests matching the pattern -EXCLUDE_PAT = TEST_SKIP_PAT='Test_crash1\|glvs\|termdebug' +EXCLUDE_PAT = TEST_SKIP_PAT='Test_crash1\|glvs\|termdebug\|Test_client_server_stopinsert' CFGFLAGS = --prefix=/usr --mandir='$${prefix}'/share/man --without-local-dir CFGFLAGS += --with-modified-by="$(BUILDER)" @@ -161,7 +161,7 @@ NAME = vim VERSION = $(basename $(DEB_VERSION_UPSTREAM)) VIMMAJOR = $(basename $(VERSION)) VIMCUR = $(NAME)$(subst .,,$(VERSION)) -LANGS = da de fr it ja pl ru tr +LANGS = da de fr it ja pl ru sv tr DOT_IN_DEPS = debian/vim-runtime.postrm DOT_IN_DEPS += debian/vim-runtime.preinst @@ -175,10 +175,6 @@ foreach-variant = \ %: dh $@ -update-changelog: - dh_testdir - wget -O debian/changelog.upstream http://ftp.vim.org/pub/vim/patches/$(VERSION)/README - override_dh_auto_clean: # The vim-basic variant is always enabled, so we can rely on it when checking # whether we can call "make distclean". The config.cache check is to avoid @@ -332,9 +328,6 @@ override_dh_install-indep: debian/vim-gui-common/$$DIR/man1/gvimtutor.1; \ done -override_dh_installchangelogs: - dh_installchangelogs -A debian/changelog.upstream - install-xxd: DESTDIR=$(CURDIR)/debian/xxd install-xxd: $(MAKE) -C src/vim-basic STRIP=: DESTDIR=$(DESTDIR) installtools install-tool-languages diff --git a/debian/vim-common.install b/debian/vim-common.install index a54efc1a..4865f845 100644 --- a/debian/vim-common.install +++ b/debian/vim-common.install @@ -6,20 +6,7 @@ usr/share/vim/${env:VIMCUR}/doc/sponsor.txt usr/share/vim/${env:VIMCUR}/doc/uganda.txt usr/share/vim/${env:VIMCUR}/doc/version${env:VIMMAJOR}.txt usr/share/icons/ -usr/share/man/da/man1/vim.1 -usr/share/man/da/man1/vimdiff.1 -usr/share/man/de/man1/vim.1 -usr/share/man/fr/man1/vim.1 -usr/share/man/fr/man1/vimdiff.1 -usr/share/man/it/man1/vim.1 -usr/share/man/it/man1/vimdiff.1 -usr/share/man/ja/man1/vim.1 -usr/share/man/ja/man1/vimdiff.1 +usr/share/man/*/man1/vim.1 +usr/share/man/*/man1/vimdiff.1 usr/share/man/man1/vim.1 usr/share/man/man1/vimdiff.1 -usr/share/man/pl/man1/vim.1 -usr/share/man/pl/man1/vimdiff.1 -usr/share/man/ru/man1/vim.1 -usr/share/man/ru/man1/vimdiff.1 -usr/share/man/tr/man1/vim.1 -usr/share/man/tr/man1/vimdiff.1 diff --git a/debian/vim-gtk3.alternatives b/debian/vim-gtk3.alternatives index 0a173e5e..d0103b76 100644 --- a/debian/vim-gtk3.alternatives +++ b/debian/vim-gtk3.alternatives @@ -10,6 +10,7 @@ Dependents: /usr/share/man/ja/man1/editor.1.gz editor.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/editor.1.gz editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/editor.1.gz editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/editor.1.gz editor.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/editor.1.gz editor.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 @@ -35,6 +36,7 @@ Dependents: /usr/share/man/ja/man1/ex.1.gz ex.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/ex.1.gz ex.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/ex.1.gz ex.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/ex.1.gz ex.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/ex.1.gz ex.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 @@ -85,6 +87,7 @@ Dependents: /usr/share/man/ja/man1/vi.1.gz vi.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/vi.1.gz vi.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/vi.1.gz vi.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/vi.1.gz vi.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/vi.1.gz vi.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 @@ -100,6 +103,7 @@ Dependents: /usr/share/man/ja/man1/view.1.gz view.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/view.1.gz view.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/view.1.gz view.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/view.1.gz view.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/view.1.gz view.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 diff --git a/debian/vim-gui-common.install b/debian/vim-gui-common.install index 303d7579..df7a3d35 100644 --- a/debian/vim-gui-common.install +++ b/debian/vim-gui-common.install @@ -1,10 +1,5 @@ debian/runtime/gvimrc etc/vim/ usr/bin/gvimtutor usr/share/applications/gvim.desktop -usr/share/man/fr/man1/evim.1 -usr/share/man/it/man1/evim.1 -usr/share/man/ja/man1/evim.1 +usr/share/man/*/man1/evim.1 usr/share/man/man1/evim.1 -usr/share/man/pl/man1/evim.1 -usr/share/man/ru/man1/evim.1 -usr/share/man/tr/man1/evim.1 diff --git a/debian/vim-motif.alternatives b/debian/vim-motif.alternatives index df58a5b0..97eb47d0 100644 --- a/debian/vim-motif.alternatives +++ b/debian/vim-motif.alternatives @@ -10,6 +10,7 @@ Dependents: /usr/share/man/ja/man1/editor.1.gz editor.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/editor.1.gz editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/editor.1.gz editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/editor.1.gz editor.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/editor.1.gz editor.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 @@ -35,6 +36,7 @@ Dependents: /usr/share/man/ja/man1/ex.1.gz ex.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/ex.1.gz ex.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/ex.1.gz ex.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/ex.1.gz ex.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/ex.1.gz ex.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 @@ -85,6 +87,7 @@ Dependents: /usr/share/man/ja/man1/vi.1.gz vi.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/vi.1.gz vi.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/vi.1.gz vi.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/vi.1.gz vi.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/vi.1.gz vi.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 @@ -100,6 +103,7 @@ Dependents: /usr/share/man/ja/man1/view.1.gz view.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/view.1.gz view.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/view.1.gz view.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/view.1.gz view.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/view.1.gz view.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 50 diff --git a/debian/vim-nox.alternatives b/debian/vim-nox.alternatives index a72eef64..cd3dc022 100644 --- a/debian/vim-nox.alternatives +++ b/debian/vim-nox.alternatives @@ -10,6 +10,7 @@ Dependents: /usr/share/man/ja/man1/editor.1.gz editor.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/editor.1.gz editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/editor.1.gz editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/editor.1.gz editor.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/editor.1.gz editor.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 40 @@ -25,6 +26,7 @@ Dependents: /usr/share/man/ja/man1/ex.1.gz ex.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/ex.1.gz ex.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/ex.1.gz ex.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/ex.1.gz ex.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/ex.1.gz ex.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 40 @@ -50,6 +52,7 @@ Dependents: /usr/share/man/ja/man1/vi.1.gz vi.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/vi.1.gz vi.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/vi.1.gz vi.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/vi.1.gz vi.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/vi.1.gz vi.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 40 @@ -65,6 +68,7 @@ Dependents: /usr/share/man/ja/man1/view.1.gz view.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/view.1.gz view.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/view.1.gz view.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/view.1.gz view.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/view.1.gz view.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 40 diff --git a/debian/vim-runtime.install b/debian/vim-runtime.install index e24dd324..d68ea897 100644 --- a/debian/vim-runtime.install +++ b/debian/vim-runtime.install @@ -1,10 +1,4 @@ usr/bin/vimtutor -usr/share/man/da/man1/vimtutor.1 -usr/share/man/fr/man1/vimtutor.1 -usr/share/man/it/man1/vimtutor.1 -usr/share/man/ja/man1/vimtutor.1 +usr/share/man/*/man1/vimtutor.1 usr/share/man/man1/vimtutor.1 -usr/share/man/pl/man1/vimtutor.1 -usr/share/man/ru/man1/vimtutor.1 -usr/share/man/tr/man1/vimtutor.1 usr/share/vim/ diff --git a/debian/vim-runtime.lintian-overrides b/debian/vim-runtime.lintian-overrides index 8cf9655b..f7bd4fdd 100644 --- a/debian/vim-runtime.lintian-overrides +++ b/debian/vim-runtime.lintian-overrides @@ -1,7 +1,6 @@ # These are intentionally in non-UTF-8 encodings national-encoding [usr/share/vim/vim*/keymap/*] national-encoding [usr/share/vim/vim*/lang/*] -national-encoding [usr/share/vim/vim*/tutor/*] # This is Vim's builtin help package-contains-documentation-outside-usr-share-doc [usr/share/vim/vim*/doc/*] diff --git a/debian/vim-tiny.alternatives b/debian/vim-tiny.alternatives index 2f4877f4..bb8714c4 100644 --- a/debian/vim-tiny.alternatives +++ b/debian/vim-tiny.alternatives @@ -10,6 +10,7 @@ Dependents: /usr/share/man/ja/man1/editor.1.gz editor.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/editor.1.gz editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/editor.1.gz editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/editor.1.gz editor.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/editor.1.gz editor.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 15 @@ -25,6 +26,7 @@ Dependents: /usr/share/man/ja/man1/ex.1.gz ex.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/ex.1.gz ex.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/ex.1.gz ex.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/ex.1.gz ex.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/ex.1.gz ex.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 15 @@ -45,6 +47,7 @@ Dependents: /usr/share/man/ja/man1/vi.1.gz vi.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/vi.1.gz vi.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/vi.1.gz vi.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/vi.1.gz vi.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/vi.1.gz vi.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 15 @@ -60,5 +63,6 @@ Dependents: /usr/share/man/ja/man1/view.1.gz view.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/view.1.gz view.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/view.1.gz view.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/view.1.gz view.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/view.1.gz view.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 15 diff --git a/debian/vim.alternatives b/debian/vim.alternatives index 67100513..e24b6cfa 100644 --- a/debian/vim.alternatives +++ b/debian/vim.alternatives @@ -10,6 +10,7 @@ Dependents: /usr/share/man/ja/man1/editor.1.gz editor.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/editor.1.gz editor.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/editor.1.gz editor.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/editor.1.gz editor.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/editor.1.gz editor.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 30 @@ -25,6 +26,7 @@ Dependents: /usr/share/man/ja/man1/ex.1.gz ex.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/ex.1.gz ex.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/ex.1.gz ex.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/ex.1.gz ex.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/ex.1.gz ex.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 30 @@ -50,6 +52,7 @@ Dependents: /usr/share/man/ja/man1/vi.1.gz vi.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/vi.1.gz vi.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/vi.1.gz vi.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/vi.1.gz vi.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/vi.1.gz vi.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 30 @@ -65,6 +68,7 @@ Dependents: /usr/share/man/ja/man1/view.1.gz view.ja.1.gz /usr/share/man/ja/man1/vim.1.gz /usr/share/man/pl/man1/view.1.gz view.pl.1.gz /usr/share/man/pl/man1/vim.1.gz /usr/share/man/ru/man1/view.1.gz view.ru.1.gz /usr/share/man/ru/man1/vim.1.gz + /usr/share/man/sv/man1/view.1.gz view.sv.1.gz /usr/share/man/sv/man1/vim.1.gz /usr/share/man/tr/man1/view.1.gz view.tr.1.gz /usr/share/man/tr/man1/vim.1.gz Priority: 30 diff --git a/lang/LICENSE.ru.txt b/lang/LICENSE.ru.txt index ba9deae9..d51f178c 100644 --- a/lang/LICENSE.ru.txt +++ b/lang/LICENSE.ru.txt @@ -1,3 +1,8 @@ +Примечание. Данный текст перевода лицензии Vim предоставляется с целью +ознакомления и не является юридически значимым. Переводчик не несёт +ответственности за возможные неточности и ошибки при переводе лицензии. +Единственно юридически значимым является текст лицензии Vim на английском языке. + ЛИЦЕНЗИЯ VIM I) Неизменённые копии программы Vim могут распространяться без ограничения @@ -29,15 +34,15 @@ II) Изменённую (или дополненную) версию прогр будут распространяться на условиях настоящей лицензии или более поздней её версии. Лица, в данное время являющиеся ответственными за разработку, указаны в перечне, размещённом по адресу: - https://github.com/orgs/vim/people. В случае изменения этой - информации, актуальные данные будут опубликованы на - соответствующих ресурсах (вероятнее всего по интернет‐адресам - vim.sf.net, www.vim.org и/или comp.editors). В случае полной - невозможности установить контакт с ответственным разработчиком, - обязательства по отправке изменений утрачивают силу. После - передачи подтверждения о получении изменений от ответственного - разработчика, необходимость в повторной отправке копии изменённой - программы Vim неприменима. + https://github.com/orgs/vim/people. + При изменении этой информации, актуальные данные будут + опубликованы на соответствующих ресурсах (вероятнее всего + по интернет‐адресам vim.sf.net, www.vim.org и/или comp.editors). + В случае полной невозможности связаться с ответственным + разработчиком, обязательства по отправке изменений утрачивают + силу. После передачи подтверждения о получении изменений + от ответственного разработчика, необходимость в повторной + отправке копии изменённой программы Vim неприменима. b) Если лицом получена изменённая версия программа Vim, распространяющаяся на условиях, указанных в ч. II) п. 2) пп. а) допускается дальнейшее её распространение этим лицом без внесения diff --git a/lang/LICENSE.sv.txt b/lang/LICENSE.sv.txt new file mode 100644 index 00000000..29a34222 --- /dev/null +++ b/lang/LICENSE.sv.txt @@ -0,0 +1,78 @@ +VIM-LICENS + +I) Det finns inga begränsningar för distribution av oförändrade kopior av Vim förutom + att de måste innehålla denna licenstext. Du kan också distribuera + oförändrade delar av Vim, likaså utan begränsningar förutom att de måste + innehålla denna licenstext. Du får också inkludera körbara filer + som du har skapat från de oförändrade Vim-källorna, samt dina egna användningsexempel + och Vim-skript. + +II) Det är tillåtet att distribuera en modifierad (eller utökad) version av Vim, + inklusive körbara filer och/eller källkod, när följande fyra + villkor är uppfyllda: + 1) Denna licenstext måste inkluderas oförändrad. + 2) Den modifierade Vim måste distribueras på ett av följande fem sätt: + a) Om du själv gör ändringar i Vim måste du tydligt beskriva + distributionen hur man kan kontakta dig. När underhållaren ber dig + (på något sätt) om en kopia av den modifierade Vim du distribuerat, måste du + måste du göra dina ändringar, inklusive källkoden, tillgängliga för + underhållaren utan kostnad. Underhållaren förbehåller sig rätten att + inkludera dina ändringar i den officiella versionen av Vim. Vad + underhållaren kommer att göra med dina ändringar och under vilken licens de + kommer att distribueras är förhandlingsbart. Om ingen förhandling har ägt rum + gäller denna licens, eller en senare version, även för dina ändringar. + De nuvarande underhållarna finns listade här: https://github.com/orgs/vim/people. + Om detta ändras kommer det att meddelas på lämpliga platser (troligen + vim.sf.net, www.vim.org och/eller comp.editors). När det är helt + omöjligt att kontakta underhållaren upphör skyldigheten att skicka + dina ändringar upphör. När underhållaren har bekräftat att han har + mottagit dina ändringar behöver de inte skickas igen. + b) Om du har fått en modifierad Vim som distribuerats enligt + nämnts under a) får du distribuera den vidare + oförändrat, enligt vad som anges i I). Om du gör ytterligare ändringar gäller + gäller texten under a) för dessa ändringar. + c) Tillhandahåll alla ändringar, inklusive källkod, med varje kopia av + den modifierade Vim du distribuerar. Detta kan göras i form av en + kontextdiff. Du kan välja vilken licens du vill använda för ny kod som du + lägger till. Ändringarna och deras licens får inte hindra andra från att + göra egna ändringar i den officiella versionen av Vim. + d) När du har en modifierad Vim som innehåller ändringar enligt + under c), kan du distribuera den utan källkoden för + ändringarna om följande tre villkor är uppfyllda: + - Licensen som gäller för ändringarna tillåter dig att distribuera + ändringarna till Vim-underhållaren utan avgift eller begränsningar, och + tillåter Vim-underhållaren att inkludera ändringarna i den officiella + versionen av Vim utan avgift eller begränsningar. + - Du behåller ändringarna i minst tre år efter senaste + distribution av motsvarande modifierade Vim. När underhållaren + eller någon som du distribuerat den modifierade Vim till ber dig (på + något sätt) om ändringarna inom denna period måste du göra dem + tillgängliga för honom. + - Du beskriver tydligt i distributionen hur man kan kontakta dig. Denna + kontaktinformationen måste vara giltig i minst tre år + efter den sista distributionen av motsvarande modifierade Vim, eller så länge + som möjligt. + e) När GNU General Public License (GPL) gäller för ändringarna, + kan du distribuera den modifierade Vim under GNU GPL version 2 eller + någon senare version. + 3) Ett meddelande måste läggas till, åtminstone i utdata från kommandot ":version" + och i introduktionsskärmen, så att användaren av den modifierade Vim + kan se att den har modifierats. Vid distribution enligt + under 2)e) krävs det endast att meddelandet läggs till i den mån detta + inte strider mot den licens som används för ändringarna. + 4) Kontaktinformationen som krävs enligt 2)a) och 2)d) får inte + tas bort eller ändras, förutom att personen själv kan göra + korrigeringar. + +III) Om du distribuerar en modifierad version av Vim uppmuntras du att använda + Vim-licensen för dina ändringar och göra dem tillgängliga för + underhållaren, inklusive källkoden. Det bästa sättet att göra detta är + via e-post eller genom att ladda upp filerna till en server och e-posta URL:en. + Om antalet ändringar är litet (t.ex. en modifierad Makefile) räcker det att skicka ett + kontextdiff. E-postadressen som ska användas är + + +IV) Det är inte tillåtet att ta bort denna licens från distributionen av Vim + källkoden, delar av den eller från en modifierad version. Du får använda denna + licensen för tidigare Vim-utgåvor istället för den licens som de levererades med + med, om du så önskar. diff --git a/lang/LICENSE.zh_cn.txt b/lang/LICENSE.zh_cn.txt new file mode 100644 index 00000000..e3eef9a3 --- /dev/null +++ b/lang/LICENSE.zh_cn.txt @@ -0,0 +1,60 @@ +注意: 本译文仅供参考。若因译文错漏引发任何问题,译者概不承担责任。VIM 许可证的 +完整英文版本为唯一法律依据。如有任何疑问,以英文原文为准。 + +VIM 许可证 + +I) 可以任意发布没有修改的 Vim 的拷贝,但是必须保证包含本许可证。您也可以发布 + 未经修改的部分 Vim,同样也必须包含这份许可证。发布由未经修改的 Vim 源代码 + 所编译出的 Vim 可执行文件,外加您自己的应用实例和 Vim 脚本也是允许的。 + +II) 在满足以下全部四个条件的前提下,您可以发布经过修改 (或扩充) 的 Vim 版本, + 包括可执行文件 和/或 源代码: + 1) 本许可证必须包含在内,并且不能被修改。 + 2) 经过修改的 Vim 必须以下述五种方式之一发布: + a) 如果您本人对 Vim 做了改动,您必须在发布版本里清楚地说明如何与您联系。 + 当 Vim 的维护者 (以任何方式) 向您索取您所发布的 Vim 时,您必须把所做 + 的改动包括源代码无偿地提供出来。维护者保留把这些改动加入 Vim 正式版本 + 的权利。至于维护者怎样处理这些改动,以及用什么许可证发布,可以协商。 + 如果没有协商,那么,本许可证,或者它更新的版本,同样适用于您做出的改 + 动。Vim 现在的几位维护者可见: + https://github.com/orgs/vim/people + 如果维护者发生变动,会在合适的地方 (很可能是 vim.sf.net、www.vim.org + 和/或 comp.editors) 公布,当完全不能与维护者联系时,发送变更的约定自 + 动终止。一旦维护者确认收到了您所做的修改,您就不必再次发送了。 + + b) 如果您得到的是一个修改过的 Vim,并且它是在条件 a) 下发布的,那么您可 + 以不加改动地在条件 I) 下发布它;如果您又做了额外的改动,则这些改动受 + 到 a) 款条文的约束。 + + c) 在您发布的经过修改的 Vim 的每一份拷贝里,提供所有的变更部分,包括源代 + 码。提供的形式可以采用上下文风格的差异比较记录 (context diff)。您可以 + 为添加的新代码选择许可证,但是这些更改和为其选择的许可证不能限制他人 + 对 Vim 正式版本作出自己的改动。 + + d) 在满足以下全部三个条件的前提下,您可以继续发布带有条件 c) 所提及之变 + 更的经过修改的 Vim,而不必在发布时提供更改部分的源代码: + - 这些变更所附带的许可证允许您把这些变更无偿地并且没有任何限制地提供 + 给 Vim 的维护者,而且允许 Vim 的维护者无偿地并且没有任何限制地把这 + 些更改加入到 Vim 的正式版本中。 + - 从您最后一次发布更改的 Vim 之日起,您要保存这些改动至少三年时间。在 + 这期间,维护者或别人 (以任何方式) 向您要求提供这些变更时,您必须提 + 供给他。 + - 您要在发布版本中清楚地说明如何与您联系,这个联系方式必须保证自最后 + 一次发布相应的经过修改的 Vim 之日起至少三年有效,或尽可能长。 + e) 当这些变更以 GPL (GNU General Public License,GNU 通用公共许可证) 发 + 布时,您可以在 GPL 版本 2,或更高版本的 GPL 下发布修改过的 Vim。 + 3) 必须添加一条改动的信息。至少要放在 "version" 命令的输出和启动画面里,好 + 让用户知道自己用的是一个修改过的 Vim。当以 2)e) 条件发布时,只有不与变 + 更适用的许可证冲突,这个信息的添加才是必要的。 + 4) 在 2)a) 和 2)d) 条件里要求的联系方式不能随便更改或删除,除非是作者自己 + 作出的更正。 + +III) 如果您发布一个更改过的 Vim,强烈建议您对变更部分使用 Vim 的许可证,并且对 + 维护者提供变更部分并开放源代码。最好的方式是通过电子邮件或者把文件放到服 + 务器上,通过电子邮件传送 URL。如果只修改了很少的部分 (例如,只是一个修改 + 过的 Makefile),那么传送一个上下文风格的差异比较记录 (context diff) 就可 + 以了。电子邮件的地址是 + +IV) 不允许从 Vim 的源代码的发行版本或其中部分的源代码里删除本许可证,即使来自 + 更改过的版本也是如此。您可能想用这份许可证代替以前版本的 Vim 里的许可证, + 这可以由您自行决定。 diff --git a/lang/README.sv.txt b/lang/README.sv.txt new file mode 100644 index 00000000..43d70648 --- /dev/null +++ b/lang/README.sv.txt @@ -0,0 +1,139 @@ +README.txt för version 9.1 av Vim: Vi IMproved. + + +VAD ÄR VIM? + +Vim är en kraftigt förbättrad version av den gamla goda UNIX-editorn Vi. Många nya +funktioner har lagts till: ångra på flera nivåer, syntaxmarkering, kommandoradshistorik +historik, onlinehjälp, stavningskontroll, filnamns komplettering, blockoperationer, +skriptspråk etc. Det finns också ett grafiskt användargränssnitt (GUI) tillgängligt. +Vi-kompatibiliteten bibehålls dock, så de som har Vi "i fingrarna" kommer +känna sig som hemma. Se "runtime/doc/vi_diff.txt" för skillnader jämfört med Vi. + +Denna editor är mycket användbar för att redigera program och andra vanliga textfiler. +Alla kommandon ges med vanliga tangentbordstecken, så de som kan skriva +med tio fingrar kan arbeta mycket snabbt. Dessutom kan funktionsknapparna +mappas till kommandon av användaren, och musen kan användas. + +Vim syftar också till att tillhandahålla en (mestadels) POSIX-kompatibel vi-implementering när +kompileras med en minimal uppsättning funktioner (vanligtvis kallad vim.tiny), som används +av många Linux-distributioner som standardvi-redigerare. + +Vim körs under MS-Windows (7, 8, 10, 11), macOS, Haiku, VMS och nästan alla +varianter av UNIX. Det bör inte vara särskilt svårt att porta till andra system. +Äldre versioner av Vim körs på MS-DOS, MS-Windows 95/98/Me/NT/2000/XP/Vista, +Amiga DOS, Atari MiNT, BeOS, RISC OS och OS/2. Dessa underhålls inte längre. + + +DISTRIBUTION + +Du kan ofta använda din favoritpakethanterare för att installera Vim. På Mac och +Linux är en liten version av Vim förinstallerad, men du behöver ändå installera Vim +om du vill ha fler funktioner. + +Det finns separata distributioner för Unix, PC, Amiga och vissa andra system. +Denna README.txt-fil medföljer runtime-arkivet. Den innehåller +dokumentation, syntaxfiler och andra filer som används vid körning. För att köra +Vim måste du skaffa antingen ett av binärarkiven eller ett källarkiv. +Vilket du behöver beror på vilket system du vill köra det på och om du +vill eller måste kompilera det själv. Se "https://www.vim.org/download.php" för +en översikt över de distributioner som för närvarande finns tillgängliga. + +Några populära ställen att hämta den senaste versionen av Vim: +* Kolla in git-arkivet från github: https://github.com/vim/vim. +* Hämta källkoden som ett arkiv: https://github.com/vim/vim/tags. +* Hämta en Windows-körbar fil från vim-win32-installer-arkivet: + https://github.com/vim/vim-win32-installer/releases. + + +KOMPILERING + +Om du har skaffat en binär distribution behöver du inte kompilera Vim. Om du +har skaffat en källkodsdistribution finns allt du behöver för att kompilera Vim i +katalogen "src". Se src/INSTALL för instruktioner. + + +INSTALLATION + +Se någon av dessa filer för systemspecifika instruktioner. Antingen i +READMEdir-katalogen (i arkivet) eller i toppkatalogen (om du packar upp en +arkiv): + +README_ami.txt Amiga +README_unix.txt Unix +README_dos.txt MS-DOS och MS-Windows +README_mac.txt Macintosh +README_haiku.txt Haiku +README_vms.txt VMS + +Det finns andra README_*.txt-filer, beroende på vilken distribution du använde. + + +DOKUMENTATION + +Vim-tutorn är en timmes lång utbildningskurs för nybörjare. Ofta kan den +startas som "vimtutor". Se ":help tutor" för mer information. + +Det bästa är att använda ":help" i Vim. Om du ännu inte har en körbar fil, läs +"runtime/doc/help.txt". Den innehåller hänvisningar till andra dokumentationsfiler. +Användarhandboken läses som en bok och rekommenderas för att lära sig använda Vim. Se +":help user-manual". + + +KOPIERING + +Vim är Charityware. Du kan använda och kopiera det så mycket du vill, men du +uppmuntras att göra en donation för att hjälpa föräldralösa barn i Uganda. Läs filen +"runtime/doc/uganda.txt" för mer information (skriv ":help uganda" i Vim). + +Sammanfattning av licensen: Det finns inga begränsningar för användning eller distribution av en +oförändrad kopia av Vim. Delar av Vim får också distribueras, men licenstexten +texten måste alltid inkluderas. För modifierade versioner gäller några begränsningar. +Licensen är GPL-kompatibel, du kan kompilera Vim med GPL-bibliotek och +distribuera det. + + +SPONSRING + +Att fixa buggar och lägga till nya funktioner tar mycket tid och ansträngning. För att visa +din uppskattning för arbetet och motivera utvecklarna att fortsätta arbeta med +Vim, skicka gärna en donation. + +Pengarna du donerar kommer huvudsakligen att användas för att hjälpa barn i Uganda. Se +"runtime/doc/uganda.txt". Men samtidigt ökar donationerna +utvecklingsteamets motivation att fortsätta arbeta med Vim! + +För den senaste informationen om sponsring, se Vims webbplats: + https://www.vim.org/sponsor/ + + +BIDRA + +Om du vill hjälpa till att förbättra Vim, se filen CONTRIBUTING.md. + + +INFORMATION + +Om du använder macOS kan du använda MacVim: https://macvim.org + +De senaste nyheterna om Vim finns på Vims hemsida: + https://www.vim.org/ + +Om du har problem, ta en titt på Vims dokumentation eller tips: + https://www.vim.org/docs.php + https://vim.fandom.com/wiki/Vim_Tips_Wiki + +Om du fortfarande har problem eller andra frågor, använd någon av mailinglistorna +för att diskutera dem med Vim-användare och utvecklare: + https://www.vim.org/maillist.php + +Om inget annat fungerar, rapportera buggar direkt till vim-dev-maillistan: + + + +HUVUDFÖRFATTARE + +Det mesta av Vim har skapats av Bram Moolenaar , ":help Bram-Moolenaar" + +Skicka övriga kommentarer, patchar, blommor och förslag till vim-dev +: diff --git a/lang/README.zh_cn.txt b/lang/README.zh_cn.txt new file mode 100644 index 00000000..94e8d8dd --- /dev/null +++ b/lang/README.zh_cn.txt @@ -0,0 +1,122 @@ +Vim: Vi IMproved 9.1 版本的 README.txt 文件 + + +什 么 是 VIM ? + +Vim 是经典 UNIX 编辑器 Vi 的一个极大改进版本。它新增了许多功能:多级撤销、语法高 +亮、命令行历史、在线帮助、拼写检查、文件名补全、块操作、脚本语言等。同时也提供了 +图形用户界面(GUI)。尽管如此,Vi 兼容性依然得以保留,习惯使用 Vi 的用户操作时仍 +会感到得心应手。与 Vi 的差异请参阅 "runtime/doc/vi_diff.txt"。 + +此编辑器对于编辑代码和其他纯文本文件非常有用。所有命令都通过常规键盘字符输入,因 +此熟练盲打的用户能够高效工作。此外,用户可以将功能键映射到命令,并且可以使用鼠标。 + +Vim 也致力于提供一个(基本)符合 POSIX 标准的 vi 实现。当它以最小功能集(通常称 +为 vim.tiny)编译时,被许多 Linux 发行版用作默认的 vi 编辑器。 + +Vim 可在 MS-Windows (7, 8, 10, 11)、macOS、Haiku、VMS 以及几乎所有 UNIX 变体上运 +行。移植到其他系统应该不太困难。旧版本的 Vim 曾在 Amiga DOS、Atari MiNT、BeOS、 +MS-DOS、MS-Windows 95/98/Me/NT/2000/XP/Vista、RISC OS 和 OS/2 上运行。这些版本的 +维护现已终止。 + + +获 取 途 径 + +通常你可以使用你喜欢的软件包管理器来安装 Vim。在 Mac 和 Linux 上,会预装一个简化 +版的 Vim,如果你需要更多功能,仍需要安装完整的 Vim。 + +有针对 Unix、PC、Amiga 和其他一些系统的独立发行版。本 README.txt 文件随运行时存 +档一起提供。该存档包含文档、语法文件以及其他运行时使用的文件。要运行 Vim,你必须 +获取二进制存档或源代码存档之一。您需要哪一种取决于您想要运行 Vim 的系统以及您是 +否希望或必须自行编译。请查阅 "https://www.vim.org/download.php" 以了解当前可用的 +发行版概览。 + +获取最新版 Vim 的常见方式: +* 从 github 检出 git 仓库:https://github.com/vim/vim。 +* 以存档形式获取源代码:https://github.com/vim/vim/tags。 +* 从 vim-win32-installer 仓库获取 Windows 可执行文件: + https://github.com/vim/vim-win32-installer/releases。 + + +编 译 + +如果你获得的是二进制发行版,则无需编译 Vim。如果你获得的是源代码发行版,编译 Vim +所需的所有内容都在 "src" 目录中。请参阅 src/INSTALL 文件中的说明。 + + +安 装 + +请查阅以下文件之一以获取系统特定的安装说明。这些文件位于仓库中的 READMEdir 目录, +或者在你解压缩存档后的顶级目录中: + +README_ami.txt Amiga +README_unix.txt Unix +README_dos.txt MS-DOS 和 MS-Windows +README_mac.txt Macintosh +README_haiku.txt Haiku +README_vms.txt VMS + +根据你使用的发行版,可能还有其他 README_*.txt 文件。 + + +文 档 + +Vim tutor 是为初学者设计的一小时培训课程。通常可以通过 "vimtutor" 命令启动。更多 +信息请参阅 ":help tutor"。 + +最佳方式是在 Vim 中使用 ":help" 命令。如果您尚未安装可执行文件,请阅读 +"runtime/doc/help.txt"。该文件包含指向其他文档文件的指引。用户手册采用书籍体例编 +排,是学习使用 Vim 的推荐资料。具体请参阅 ":help user-manual"。 + + +复 制 与 版 权 + +Vim 是慈善软件。您可以尽情使用和复制它,但鼓励您捐款以帮助乌干达的孤儿。请阅读 +"runtime/doc/uganda.txt" 文件了解详情(在 Vim 中执行 ":help uganda")。 + +许可摘要:对于未经修改的 Vim 副本,其使用或分发不受任何限制。Vim 的部分内容亦可 +分发,但必须始终包含许可文本。对于修改版本,则需遵循若干限制条款。本许可证与 GPL +兼容,您可使用 GPL 库编译 Vim 并进行分发。 + + +赞 助 + +修复错误与增添新功能均需投入大量时间与精力。为支持开发工作并激励开发者持续完善 +Vim,敬请通过捐赠表达您的认可。 + +您捐赠的资金将主要用于帮助乌干达的儿童。请参阅 "runtime/doc/uganda.txt"。但同时, +您的捐赠也将激励开发团队持续投入 Vim 的开发工作。 + +关于赞助的最新信息,请查看 Vim 网站: + https://www.vim.org/sponsor/ + + +贡 献 + +如果您想帮助改进 Vim,请参阅 CONTRIBUTING.md 文件。 + + +信 息 与 支 持 + +如果您在 macOS 上,可以使用 MacVim:https://macvim.org + +关于 Vim 的最新消息可以在 Vim 主页上找到: + https://www.vim.org/ + +如果您遇到问题,请查阅 Vim 文档或使用技巧: + https://www.vim.org/docs.php + https://vim.fandom.com/wiki/Vim_Tips_Wiki + +如果您仍有问题或其他疑问,请使用其中一个邮件列表与 Vim 用户和开发者讨论: + https://www.vim.org/maillist.php + +如果其他方法都无效,请直接将错误报告发送到 vim-dev 邮件列表: + + + +主 要 作 者 + +Vim 主要由 Bram Moolenaar 创建,可通过 ":help Bram-Moolenaar" 命 +令了解更多信息。 + +请将任何其他评论、补丁、鲜花和建议发送到 vim-dev 邮件列表: diff --git a/nsis/README.txt b/nsis/README.txt index c4f3645a..01c6c5d3 100644 --- a/nsis/README.txt +++ b/nsis/README.txt @@ -35,7 +35,7 @@ Preparatory stage and for the 64-bit version — "winpty.dll" from x64/bin to "winpty64.dll". Put the renamed file and "winpty-agent.exe" in "../.." (above the "vim91" directory). However, you can specify a different directory by specifying - the appropriate makefile value. How to do this is described below. + the appropriate makefile value. How to do this is described below. 6. To use stronger encryption, add the Sodium library. You can get it here: https://github.com/jedisct1/libsodium/releases/download/1.0.19-RELEASE/libsodium-1.0.19-msvc.zip @@ -64,7 +64,7 @@ Preparatory stage The default is "../..". However, you can specify a different directory by specifying the appropriate makefile value. How to do - this is described below. + this is described below. 8. Install NSIS if you didn't do that already. Download Unicode version the ShellExecAsUser plug-in for NSIS from: @@ -80,7 +80,7 @@ Installer assembly stage After the installer is created and you copy it to the desired location, run the following command in the "/nsis" directory nmake.exe -lf Make_mvc.mak clean - + On UNIX-like systems, go to the "/nsis" directory and type the command make -f Makefile [variables] all diff --git a/nsis/gvim.nsi b/nsis/gvim.nsi index 5cfc0512..9843ff08 100644 --- a/nsis/gvim.nsi +++ b/nsis/gvim.nsi @@ -240,6 +240,7 @@ Page custom SetCustom ValidateCustom !include "lang\russian.nsi" !include "lang\serbian.nsi" !include "lang\simpchinese.nsi" + !include "lang\swedish.nsi" !include "lang\tradchinese.nsi" !include "lang\turkish.nsi" !endif diff --git a/nsis/lang/japanese.nsi b/nsis/lang/japanese.nsi index c28529cb..6bacf493 100644 --- a/nsis/lang/japanese.nsi +++ b/nsis/lang/japanese.nsi @@ -32,14 +32,14 @@ LangString ^InstallBtn ${LANG_JAPANESE} \ ############################################################################## LicenseLangString page_lic_file 0 "..\lang\LICENSE.nsis.txt" -#LicenseLangString page_lic_file ${LANG_JAPANESE} "..\lang\LICENSE.ja.nsis.txt" +#LicenseLangString page_lic_file ${LANG_JAPANESE} "..\lang\LICENSE.ja.txt" ############################################################################## # Translated README.txt file, which is opened after installation {{{1 ############################################################################## LangString vim_readme_file 0 "README.txt" -#LangString vim_readme_file ${LANG_JAPANESE} "README.ja.txt" +#LangString vim_readme_file ${LANG_JAPANESE} "README.jax.txt" ############################################################################## # MUI Configuration Strings {{{1 diff --git a/nsis/lang/simpchinese.nsi b/nsis/lang/simpchinese.nsi index 0c9290ea..fb4d5087 100644 --- a/nsis/lang/simpchinese.nsi +++ b/nsis/lang/simpchinese.nsi @@ -22,16 +22,14 @@ LangString ^UninstallCaption ${LANG_SIMPCHINESE} \ # Translated license file for the license page {{{1 ############################################################################## -LicenseLangString page_lic_file 0 "..\lang\LICENSE.nsis.txt" -#LicenseLangString page_lic_file ${LANG_SIMPCHINESE} \ -# "..\lang\LICENSE.zh_cn.nsis.txt" +LicenseLangString page_lic_file ${LANG_SIMPCHINESE} \ + "..\lang\LICENSE.zh_cn.nsis.txt" ############################################################################## # Translated README.txt file, which is opened after installation {{{1 ############################################################################## -LangString vim_readme_file 0 "README.txt" -#LangString vim_readme_file ${LANG_SIMPCHINESE} "README.zh_cn.txt" +LangString vim_readme_file ${LANG_SIMPCHINESE} "README.zh_cn.txt" ############################################################################## # MUI Configuration Strings {{{1 diff --git a/nsis/lang/swedish.nsi b/nsis/lang/swedish.nsi new file mode 100644 index 00000000..b512175a --- /dev/null +++ b/nsis/lang/swedish.nsi @@ -0,0 +1,288 @@ +# vi:set ts=8 sts=4 sw=4 et fdm=marker: +# +# swedish.nsi: Svenska strängar för gvim NSIS-installationsprogram. +# +# Lokalisering-ID : 1053 +# Lokalt namn : sv +# filkodning : UTF-8 +# Översättare : Daniel Nylander + +!insertmacro MUI_LANGUAGE "Swedish" + + +# Skriv över standardöversättningen. +# Dessa strängar ska alltid vara på engelska. Annars misslyckas dosinst.c. +LangString ^SetupCaption ${LANG_SWEDISH} \ + "$(^Name) Setup" +LangString ^UninstallCaption ${LANG_SWEDISH} \ + "$(^Name) Uninstall" + +############################################################################## +# Licensfil för licenssidan {{{1 +############################################################################## + +LicenseLangString page_lic_file ${LANG_SWEDISH} "..\lang\LICENSE.sv.nsis.txt" + +############################################################################## +# README.txt-fil, som öppnas efter installationen {{{1 +############################################################################## + +LangString vim_readme_file ${LANG_SWEDISH} "README.sv.txt" + +############################################################################## +# MUI-konfigurationssträngar {{{1 +############################################################################## + +#LangString str_dest_folder ${LANG_SWEDISH} \ +# "Målmapp (måste sluta med $\"vim$\")" + +LangString str_show_readme ${LANG_SWEDISH} \ + "Visa README efter avslutad installation" + +# Installationstyper: +LangString str_type_typical ${LANG_SWEDISH} \ + "Typisk" + +LangString str_type_minimal ${LANG_SWEDISH} \ + "Minimal" + +LangString str_type_full ${LANG_SWEDISH} \ + "Fullständig" + + +############################################################################## +# Avsnittstitlar och beskrivning {{{1 +############################################################################## + +LangString str_section_old_ver ${LANG_SWEDISH} \ + "Avinstallera befintliga versioner" +LangString str_desc_old_ver ${LANG_SWEDISH} \ + "Avinstallera befintliga Vim-versioner från ditt system." + +LangString str_section_exe ${LANG_SWEDISH} \ + "Vim GUI och runtime-filer" +LangString str_desc_exe ${LANG_SWEDISH} \ + "Vim GUI-körbara filer och runtime-filer. Denna komponent krävs." + +LangString str_section_console ${LANG_SWEDISH} \ + "Vim-konsolprogram" +LangString str_desc_console ${LANG_SWEDISH} \ + "Konsolversion av Vim (vim.exe)." + +LangString str_section_batch ${LANG_SWEDISH} \ + "Skapa .bat-filer" +LangString str_desc_batch ${LANG_SWEDISH} \ + "Skapa .bat-filer för Vim-varianter i Windows-katalogen för \ + kommandoradsanvändning." + +LangString str_group_icons ${LANG_SWEDISH} \ + "Skapa ikoner för Vim" +LangString str_desc_icons ${LANG_SWEDISH} \ + "Skapa ikoner för Vim på olika platser för att underlätta åtkomsten." + +LangString str_section_desktop ${LANG_SWEDISH} \ + "På skrivbordet" +LangString str_desc_desktop ${LANG_SWEDISH} \ + "Skapa ikoner för gVim-körbara filer på skrivbordet." + +LangString str_section_start_menu ${LANG_SWEDISH} \ + "I startmenyns programmapp" +LangString str_desc_start_menu ${LANG_SWEDISH} \ + "Lägg till Vim i programmappen i startmenyn." + +#LangString str_section_quick_launch ${LANG_SWEDISH} \ +# "I snabbstartfältet" +#LangString str_desc_quick_launch ${LANG_SWEDISH} \ +# "Lägg till Vim-genväg i snabbstartfältet." + +LangString str_section_edit_with ${LANG_SWEDISH} \ + "Lägg till Vim-kontextmeny" +LangString str_desc_edit_with ${LANG_SWEDISH} \ + "Lägg till Vim i listan över snabbmenyn $\"Öppna med...$\"." + +#LangString str_section_edit_with32 ${LANG_SWEDISH} \ +# "32-bitarsversion" +#LangString str_desc_edit_with32 ${LANG_SWEDISH} \ +# "Lägg till Vim i listan över snabbmenyn $\"Öppna med...$\" \ +# för 32-bitarsprogram." + +#LangString str_section_edit_with64 ${LANG_SWEDISH} \ +# "64-bitarsversion" +#LangString str_desc_edit_with64 ${LANG_SWEDISH} \ +# "Lägg till Vim i listan över kontextmenyn $\"Öppna med...$\" \ +# för 64-bitarsprogram." + +LangString str_section_vim_rc ${LANG_SWEDISH} \ + "Skapa standardkonfiguration" +LangString str_desc_vim_rc ${LANG_SWEDISH} \ + "Skapa en standardkonfigurationsfil (_vimrc) om det inte redan finns en." + +LangString str_group_plugin ${LANG_SWEDISH} \ + "Skapa plugin-kataloger" +LangString str_desc_plugin ${LANG_SWEDISH} \ + "Skapa plugin-kataloger. Plugin-kataloger gör det möjligt att utöka Vim \ + genom att släppa en fil i en katalog." + +LangString str_section_plugin_home ${LANG_SWEDISH} \ + "Privat" +LangString str_desc_plugin_home ${LANG_SWEDISH} \ + "Skapa plugin-kataloger i HOME-katalogen." + +LangString str_section_plugin_vim ${LANG_SWEDISH} \ + "Delad" +LangString str_desc_plugin_vim ${LANG_SWEDISH} \ + "Skapa plugin-kataloger i Vim-installationskatalogen, den används för \ + alla på systemet." + +LangString str_section_nls ${LANG_SWEDISH} \ + "Stöd för modersmål" +LangString str_desc_nls ${LANG_SWEDISH} \ + "Installera filer för stöd för modersmål." + +LangString str_unsection_register ${LANG_SWEDISH} \ + "Avregistrera Vim" +LangString str_desc_unregister ${LANG_SWEDISH} \ + "Avregistrera Vim från systemet." + +LangString str_unsection_exe ${LANG_SWEDISH} \ + "Ta bort Vim-körbara filer/körningsfiler" +LangString str_desc_rm_exe ${LANG_SWEDISH} \ + "Ta bort alla Vim-körbara filer och runtime-filer." + +LangString str_ungroup_plugin ${LANG_SWEDISH} \ + "Ta bort plugin-kataloger" +LangString str_desc_rm_plugin ${LANG_SWEDISH} \ + "Ta bort plugin-katalogerna om de är tomma." + +LangString str_unsection_plugin_home ${LANG_SWEDISH} \ + "Privat" +LangString str_desc_rm_plugin_home ${LANG_SWEDISH} \ + "Ta bort plugin-katalogerna från HOME-katalogen." + +LangString str_unsection_plugin_vim ${LANG_SWEDISH} \ + "Delad" +LangString str_desc_rm_plugin_vim ${LANG_SWEDISH} \ + "Ta bort plugin-katalogerna från Vim-installationskatalogen." + +LangString str_unsection_rootdir ${LANG_SWEDISH} \ + "Ta bort Vim-rotkatalogen" +LangString str_desc_rm_rootdir ${LANG_SWEDISH} \ + "Ta bort Vim-rotkatalogen. Den innehåller dina Vim-konfigurationsfiler!" + + +############################################################################## +# Meddelanden {{{1 +############################################################################## + +#LangString str_msg_too_many_ver ${LANG_SWEDISH} \ +# "Hittade $vim_old_ver_count Vim-versioner på ditt system.$\r$\n\ +# Denna installationsprogram kan endast hantera ${VIM_MAX_OLD_VER} versioner \ +# .$\r$\n\ +# Ta bort några versioner och börja om." + +#LangString str_msg_invalid_root ${LANG_SWEDISH} \ +# "Ogiltig installationsväg: $vim_install_root!$\r$\n\ +# Den ska sluta med $\"vim$\"." + +#LangString str_msg_bin_mismatch ${LANG_SWEDISH} \ +# "Binär sökväg stämmer inte!$\r$\n$\r$\n\ +# Förväntar mig att binärvägen är $\"$vim_bin_path$\",$\r$\n\ +# men systemet anger att binärvägen är $\"$INSTDIR$\"." + +#LangString str_msg_vim_running ${LANG_SWEDISH} \ +# "Vim körs fortfarande på ditt system.$\r$\n\ +# Stäng alla instanser av Vim innan du fortsätter." + +#LangString str_msg_register_ole ${LANG_SWEDISH} \ +# "Försöker registrera Vim med OLE. \ +# Det finns inget meddelande som anger om detta fungerar eller inte." + +#LangString str_msg_unreg_ole ${LANG_SWEDISH} \ +# "Försöker avregistrera Vim från OLE. \ +# Det finns inget meddelande som anger om detta fungerar eller inte." + +#LangString str_msg_rm_start ${LANG_SWEDISH} \ +# "Avinstallera följande version:" + +#LangString str_msg_rm_fail ${LANG_SWEDISH} \ +# "Det gick inte att avinstallera följande version:" + +#LangString str_msg_no_rm_key ${LANG_SWEDISH} \ +# "Kan inte hitta avinstallationsnyckeln i registret." + +#LangString str_msg_no_rm_reg ${LANG_SWEDISH} \ +# "Kan inte hitta avinstallationsprogrammet i registret." + +#LangString str_msg_no_rm_exe ${LANG_SWEDISH} \ +# "Kan inte komma åt avinstallationsprogrammet." + +#LangString str_msg_rm_copy_fail ${LANG_SWEDISH} \ +# "Det gick inte att kopiera avinstallationsprogrammet till den tillfälliga katalogen." + +#LangString str_msg_rm_run_fail ${LANG_SWEDISH} \ +# "Det gick inte att köra avinstallationsprogrammet." + +#LangString str_msg_abort_install ${LANG_SWEDISH} \ +# "Installationsprogrammet avbryts." + +LangString str_msg_install_fail ${LANG_SWEDISH} \ + "Installationen misslyckades. Bättre lycka nästa gång." + +LangString str_msg_rm_exe_fail ${LANG_SWEDISH} \ + "Vissa filer i $0 har inte raderats!$\r$\n\ + Du måste göra det manuellt." + +#LangString str_msg_rm_root_fail ${LANG_SWEDISH} \ +# "VARNING: Kan inte ta bort $\"$vim_install_root$\", den är inte tom!" + +LangString str_msg_uninstalling ${LANG_SWEDISH} \ + "Avinstallerar den gamla versionen..." + +LangString str_msg_registering ${LANG_SWEDISH} \ + "Registrerar..." + +LangString str_msg_unregistering ${LANG_SWEDISH} \ + "Avregistrerar..." + + +############################################################################## +# Dialogruta {{{1 +############################################################################## + +LangString str_vimrc_page_title ${LANG_SWEDISH} \ + "Välj _vimrc-inställningar" +LangString str_vimrc_page_subtitle ${LANG_SWEDISH} \ + "Välj inställningar för förbättringar, tangentbord och mus." + +LangString str_msg_compat_title ${LANG_SWEDISH} \ + " Vi / Vim-beteende " +LangString str_msg_compat_desc ${LANG_SWEDISH} \ + "&Kompatibilitet och förbättringar" +LangString str_msg_compat_vi ${LANG_SWEDISH} \ + "Vi-kompatibel" +LangString str_msg_compat_vim ${LANG_SWEDISH} \ + "Vim original" +LangString str_msg_compat_defaults ${LANG_SWEDISH} \ + "Vim med vissa förbättringar (ladda defaults.vim)" +LangString str_msg_compat_all ${LANG_SWEDISH} \ + "Vim med alla förbättringar (ladda vimrc_example.vim) (Standard)" + +LangString str_msg_keymap_title ${LANG_SWEDISH} \ + " Mappningar " +LangString str_msg_keymap_desc ${LANG_SWEDISH} \ + "&Omkonfigurera några tangenter för Windows (Ctrl-V, Ctrl-C, Ctrl-A, Ctrl-S, Ctrl-F, etc)" +LangString str_msg_keymap_default ${LANG_SWEDISH} \ + "Omkonfigurera inte tangenter (standard)" +LangString str_msg_keymap_windows ${LANG_SWEDISH} \ + "Omkonfigurera några tangenter" + +LangString str_msg_mouse_title ${LANG_SWEDISH} \ + " Mus " +LangString str_msg_mouse_desc ${LANG_SWEDISH} \ + "&Funktion för höger- och vänsterknapp" +LangString str_msg_mouse_default ${LANG_SWEDISH} \ + "Höger: popup-meny, Vänster: visuellt läge (Standard)" +LangString str_msg_mouse_windows ${LANG_SWEDISH} \ + "Höger: popup-meny, Vänster: välj läge (Windows)" +LangString str_msg_mouse_unix ${LANG_SWEDISH} \ + "Höger: utökar valet, Vänster: visuellt läge (Unix)" diff --git a/runtime/autoload/ccomplete.vim b/runtime/autoload/ccomplete.vim index cb4bb2c1..51237be9 100644 --- a/runtime/autoload/ccomplete.vim +++ b/runtime/autoload/ccomplete.vim @@ -3,7 +3,7 @@ vim9script noclear # Vim completion script # Language: C # Maintainer: The Vim Project -# Last Change: 2025 Jul 24 +# Last Change: 2026 Feb 18 # Rewritten in Vim9 script by github user lacygoill # Former Maintainer: Bram Moolenaar @@ -489,7 +489,7 @@ def Nextitem( # {{{1 continue endif - # Use the tags file to find out if this is a typedef. + # Use the tags file to find out if this is a typedef or struct var diclist: list> = taglist('^' .. tokens[tidx] .. '$') for tagidx: number in len(diclist)->range() @@ -509,6 +509,13 @@ def Nextitem( # {{{1 continue endif + # handle struct + if item['kind'] == 's' + res = StructMembers('struct:' .. tokens[tidx], items, all) + break + endif + + # Only handle typedefs here. if item['kind'] != 't' continue @@ -733,4 +740,4 @@ def SearchMembers( # {{{1 enddef #}}}1 -# vim: noet sw=2 sts=2 +# vim: et sw=2 sts=2 diff --git a/runtime/autoload/context.vim b/runtime/autoload/context.vim index 07edd9ae..5736406a 100644 --- a/runtime/autoload/context.vim +++ b/runtime/autoload/context.vim @@ -3,13 +3,13 @@ vim9script # Language: ConTeXt typesetting engine # Maintainer: Nicola Vitacolonna # Former Maintainers: Nikolai Weibull -# Latest Revision: 2023 Dec 26 +# Latest Revision: 2026 Feb 03 # Typesetting {{{ import autoload './typeset.vim' export def ConTeXtCmd(path: string): list - var cmd = ['mtxrun', '--script', 'context', '--nonstopmode', '--autogenerate'] + var cmd = ['mtxrun', '--script', 'context', '--paranoid', '--autogenerate'] if !empty(get(g:, 'context_extra_options', '')) cmd += g:context_extra_options endif @@ -30,14 +30,21 @@ export def StopJobs() enddef export def Log(bufname: string) - execute 'edit' typeset.LogPath(bufname) + var logpath = typeset.LogPath(bufname) + + if filereadable(logpath) + execute 'edit' typeset.LogPath(bufname) + return + endif + + echomsg $'[ConTeXt] No log file found ({logpath})' enddef # }}} # Completion {{{ def BinarySearch(base: string, keywords: list): list - const pat = '^' .. base - const len = len(keywords) + var pat = '^' .. base + var len = len(keywords) var res = [] var lft = 0 var rgt = len diff --git a/runtime/autoload/dist/ft.vim b/runtime/autoload/dist/ft.vim index 39ee2a94..5b54b1c4 100644 --- a/runtime/autoload/dist/ft.vim +++ b/runtime/autoload/dist/ft.vim @@ -3,7 +3,7 @@ vim9script # Vim functions for file type detection # # Maintainer: The Vim Project -# Last Change: 2025 Oct 09 +# Last Change: 2026 Mar 20 # Former Maintainer: Bram Moolenaar # These functions are moved here from runtime/filetype.vim to make startup @@ -29,6 +29,28 @@ export def Check_inp() endif enddef +# Erlang Application Resource Files (*.app.src is matched by extension) +# See: https://erlang.org/doc/system/applications +export def FTapp() + if exists("g:filetype_app") + exe "setf " .. g:filetype_app + return + endif + const pat = '^\s*{\s*application\s*,\s*\(''\=\)' .. expand("%:t:r:r") .. '\1\s*,' + var line: string + for lnum in range(1, min([line("$"), 100])) + line = getline(lnum) + # skip Erlang comments, might be something else + if line =~ '^\s*%' || line =~ '^\s*$' + continue + elseif line =~ '^\s*{' && + getline(lnum, lnum + 9)->filter((_, v) => v !~ '^\s*%')->join(' ') =~# pat + setf erlang + endif + return + endfor +enddef + # This function checks for the kind of assembly that is wanted by the user, or # can be detected from the beginning of the file. export def FTasm() @@ -76,7 +98,7 @@ export def FTasmsyntax() b:asmsyntax = "masm" return elseif line =~ 'Texas Instruments Incorporated' || (line =~ '^\*' && !is_slash_star_encountered) - # tiasm uses `* commment`, but detection is unreliable if '/*' is seen + # tiasm uses `* comment`, but detection is unreliable if '/*' is seen b:asmsyntax = "tiasm" return elseif ((line =~? '\.title\>\|\.ident\>\|\.macro\>\|\.subtitle\>\|\.library\>')) @@ -173,6 +195,7 @@ export def FTcl() endif enddef +# Determines whether a *.cls file is ObjectScript, TeX, Rexx, Visual Basic, or Smalltalk. export def FTcls() if exists("g:filetype_cls") exe "setf " .. g:filetype_cls @@ -189,7 +212,20 @@ export def FTcls() endif var nonblank1 = getline(nextnonblank(1)) - if nonblank1 =~ '^\v%(\%|\\)' + var lnum = nextnonblank(1) + while lnum > 0 && lnum <= line("$") + var line = getline(lnum) + if line =~? '^\s*\%(import\|include\|includegenerator\)\>' + lnum = nextnonblank(lnum + 1) + else + nonblank1 = line + break + endif + endwhile + + if nonblank1 =~? '^\s*class\>\s\+[%A-Za-z][%A-Za-z0-9_.]*\%(\s\+extends\>\|\s*\[\|\s*{\|$\)' + setf objectscript + elseif nonblank1 =~ '^\v%(\%|\\)' setf tex elseif nonblank1 =~ '^\s*\%(/\*\|::\w\)' setf rexx @@ -451,12 +487,19 @@ def IsHareModule(dir: string, depth: number): bool endif # Check all files in the directory before recursing into subdirectories. - return glob(dir .. '/*', true, true) + const items = glob(dir .. '/*', true, true) ->sort((a, b) => isdirectory(a) - isdirectory(b)) - ->reduce((acc, n) => acc - || n =~ '\.ha$' - || isdirectory(n) && IsHareModule(n, depth - 1), - false) + for n in items + if isdirectory(n) + if IsHareModule(n, depth - 1) + return true + endif + elseif n =~ '\.ha$' + return true + endif + endfor + + return false enddef # Determines whether a README file is inside a Hare module and should receive @@ -1484,7 +1527,7 @@ export def FTdsp() # Test the file contents for line in getline(1, 200) - # Chech for comment style + # Check for comment style if line =~ '^#.*' setf make return @@ -1659,6 +1702,7 @@ const ft_from_ext = { # XA65 MOS6510 cross assembler "a65": "a65", # Applescript + "applescript": "applescript", "scpt": "applescript", # Applix ELF "am": "elf", @@ -1723,7 +1767,7 @@ const ft_from_ext = { "bst": "bst", # Bicep "bicep": "bicep", - "bicepparam": "bicep", + "bicepparam": "bicep-params", # BIND zone "zone": "bindzone", # Blank @@ -1735,6 +1779,8 @@ const ft_from_ext = { # BSDL "bsd": "bsdl", "bsdl": "bsdl", + # Bpftrace + "bt": "bpftrace", # C3 "c3": "c3", "c3i": "c3", @@ -1743,6 +1789,8 @@ const ft_from_ext = { "cairo": "cairo", # Cap'n Proto "capnp": "capnp", + # Common Package Specification + "cps": "json", # C# "cs": "cs", "csx": "cs", @@ -1800,6 +1848,8 @@ const ft_from_ext = { "tlh": "cpp", # Cascading Style Sheets "css": "css", + # Common Expression Language (CEL) - https://cel.dev + "cel": "cel", # Century Term Command Scripts (*.cmd too) "con": "cterm", # ChordPro @@ -1838,6 +1888,8 @@ const ft_from_ext = { "cr": "crystal", # CSV Files "csv": "csv", + # Concertor + "cto": "concerto", # CUDA Compute Unified Device Architecture "cu": "cuda", "cuh": "cuda", @@ -1851,6 +1903,9 @@ const ft_from_ext = { "elv": "elvish", # Faust "lib": "faust", + # Fennel + "fnl": "fennel", + "fnlm": "fennel", # Libreoffice config files "xcu": "xml", "xlb": "xml", @@ -1889,6 +1944,9 @@ const ft_from_ext = { # Diff files "diff": "diff", "rej": "diff", + # Djot + "dj": "djot", + "djot": "djot", # DOT "dot": "dot", "gv": "dot", @@ -1951,6 +2009,8 @@ const ft_from_ext = { "fish": "fish", # Flix "flix": "flix", + # Fluent + "ftl": "fluent", # Focus Executable "fex": "focexec", "focexec": "focexec", @@ -2093,6 +2153,8 @@ const ft_from_ext = { "tmpl": "template", # Hurl "hurl": "hurl", + # Hylo + "hylo": "hylo", # Hyper Builder "hb": "hb", # Httest @@ -2202,6 +2264,10 @@ const ft_from_ext = { "k": "kwt", # Kivy "kv": "kivy", + # Koka + "kk": "koka", + # Kos + "kos": "kos", # Kotlin "kt": "kotlin", "ktm": "kotlin", @@ -2225,6 +2291,8 @@ const ft_from_ext = { "ldg": "ledger", "ledger": "ledger", "journal": "ledger", + # Leex + "xrl": "leex", # Leo "leo": "leo", # Less @@ -2332,6 +2400,13 @@ const ft_from_ext = { # N1QL "n1ql": "n1ql", "nql": "n1ql", + # Neon + "neon": "neon", + # NetLinx + "axs": "netlinx", + "axi": "netlinx", + # Nickel + "ncl": "nickel", # Nim file "nim": "nim", "nims": "nim", @@ -2344,6 +2419,8 @@ const ft_from_ext = { "norg": "norg", # Novell netware batch files "ncf": "ncf", + # N-Quads + "nq": "nq", # Not Quite C "nqc": "nqc", # NSE - Nmap Script Engine - uses Lua syntax @@ -2473,6 +2550,7 @@ const ft_from_ext = { "textproto": "pbtxt", "textpb": "pbtxt", "pbtxt": "pbtxt", + "aconfig": "pbtxt", # Android aconfig files # Poke "pk": "poke", # Nvidia PTX (Parallel Thread Execution) @@ -2513,6 +2591,9 @@ const ft_from_ext = { "rakumod": "raku", "rakudoc": "raku", "rakutest": "raku", + # Razor + "cshtml": "razor", + "razor": "razor", # Renderman Interface Bytestream "rib": "rib", # Rego Policy Language @@ -2569,6 +2650,8 @@ const ft_from_ext = { "builder": "ruby", "rxml": "ruby", "rjs": "ruby", + # Sorbet (Ruby typechecker) + "rbi": "ruby", # Rust "rs": "rust", # S-lang @@ -2701,6 +2784,7 @@ const ft_from_ext = { "nut": "squirrel", # Starlark "ipd": "starlark", + "sky": "starlark", "star": "starlark", "starlark": "starlark", # OpenVPN configuration @@ -2778,6 +2862,8 @@ const ft_from_ext = { "txi": "texinfo", # Thrift (Apache) "thrift": "thrift", + # Tiger + "tig": "tiger", # TLA+ "tla": "tla", # TPP - Text Presentation Program @@ -2951,6 +3037,9 @@ const ft_from_ext = { "raml": "raml", # YANG "yang": "yang", + # YARA, YARA-X + "yara": "yara", + "yar": "yara", # Yuck "yuck": "yuck", # Zimbu @@ -2967,6 +3056,7 @@ const ft_from_ext = { "usd": "usd", # Rofi stylesheet "rasi": "rasi", + "rasinc": "rasi", # Zsh module # mdd: https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L285-L288 # mdh, pro: https://github.com/zsh-users/zsh/blob/57248b88830ce56adc243a40c7773fb3825cab34/Etc/zsh-development-guide#L268-L271 @@ -2981,6 +3071,9 @@ const ft_from_ext = { "blp": "blueprint", # Blueprint build system file "bp": "bp", + # Tiltfile + "Tiltfile": "tiltfile", + "tiltfile": "tiltfile" } # Key: file name (the final path component, excluding the drive and root) # Value: filetype @@ -2997,6 +3090,8 @@ const ft_from_name = { "apt.conf": "aptconf", # BIND zone "named.root": "bindzone", + # Brewfile (uses Ruby syntax) + "Brewfile": "ruby", # Busted (Lua unit testing framework - configuration files) ".busted": "lua", # Bun history @@ -3065,6 +3160,8 @@ const ft_from_name = { ".editorconfig": "editorconfig", # Elinks configuration "elinks.conf": "elinks", + # Erlang + "rebar.config": "erlang", # Exim "exim.conf": "exim", # Exports @@ -3243,6 +3340,9 @@ const ft_from_name = { # Screen RC ".screenrc": "screen", "screenrc": "screen", + # skhd (simple hotkey daemon for macOS) + ".skhdrc": "skhd", + "skhdrc": "skhd", # SLRN ".slrnrc": "slrnrc", # Squid @@ -3263,6 +3363,9 @@ const ft_from_name = { # TF (TinyFugue) mud client ".tfrc": "tf", "tfrc": "tf", + # Tilefile + "Tiltfile": "tiltfile", + "tiltfile": "tiltfile", # Trustees "trustees.conf": "trustees", # Vagrant (uses Ruby syntax) diff --git a/runtime/autoload/dist/script.vim b/runtime/autoload/dist/script.vim index 5fb45ccc..de168f0c 100644 --- a/runtime/autoload/dist/script.vim +++ b/runtime/autoload/dist/script.vim @@ -4,7 +4,7 @@ vim9script # Invoked from "scripts.vim" in 'runtimepath' # # Maintainer: The Vim Project -# Last Change: 2025 Aug 09 +# Last Change: 2025 Dec 22 # Former Maintainer: Bram Moolenaar export def DetectFiletype() @@ -233,6 +233,10 @@ export def Exe2filetype(name: string, line1: string): string elseif name =~ '^execlineb\>' return 'execline' + # Bpftrace + elseif name =~ '^bpftrace\>' + return 'bpftrace' + # Vim elseif name =~ '^vim\>' return 'vim' diff --git a/runtime/autoload/dist/vim.vim b/runtime/autoload/dist/vim.vim index 1632aed2..5a0f3505 100644 --- a/runtime/autoload/dist/vim.vim +++ b/runtime/autoload/dist/vim.vim @@ -1,9 +1,9 @@ " Vim runtime support library, " runs the Vim9 script version or legacy script version -" on demand (mostly for Neovim compatability) +" on demand (mostly for Neovim compatibility) " " Maintainer: The Vim Project -" Last Change: 2025 Apr 27 +" Last Change: 2026 Jan 11 " enable the zip and gzip plugin by default, if not set diff --git a/runtime/autoload/dist/vim9.vim b/runtime/autoload/dist/vim9.vim index fa14bdaf..87b3dbb8 100644 --- a/runtime/autoload/dist/vim9.vim +++ b/runtime/autoload/dist/vim9.vim @@ -3,7 +3,7 @@ vim9script # Vim runtime support library # # Maintainer: The Vim Project -# Last Change: 2025 Aug 15 +# Last Change: 2026 Mar 10 export def IsSafeExecutable(filetype: string, executable: string): bool if empty(exepath(executable)) @@ -60,15 +60,20 @@ if has('unix') enddef else export def Launch(args: string) - const fork = has('gui_running') ? '' : '&' - execute $':silent ! nohup {args} {Redir()} {fork}' | redraw! + # Use job_start, because using !xdg-open is known not to work with zsh + # ignore signals on exit + job_start(split(args), {'stoponexit': ''}) enddef endif elseif has('win32') export def Launch(args: string) - const shell = (&shell =~? '\') ? '' : 'cmd.exe /c' - const quotes = empty(shell) ? '' : '""' - execute $'silent ! {shell} start {quotes} /b {args} {Redir()}' | redraw! + try + execute ':silent !start' args | redraw! + catch /^Vim(!):E371:/ + echohl ErrorMsg + echom "dist#vim9#Launch(): can not start" args + echohl None + endtry enddef else export def Launch(dummy: string) @@ -81,7 +86,10 @@ var os_viewer = null_string if has('win32unix') # (cyg)start suffices os_viewer = '' -# Windows / WSL +# Windows +elseif has('win32') + os_viewer = '' # Use :!start +# WSL elseif executable('explorer.exe') os_viewer = 'explorer.exe' # Linux / BSD @@ -126,7 +134,18 @@ export def Open(file: string) &shellslash = false defer setbufvar('%', '&shellslash', true) endif - Launch($"{Viewer()} {shellescape(file, 1)}") + if &shell == 'pwsh' || &shell == 'powershell' + const shell = &shell + setlocal shell& + defer setbufvar('%', '&shell', shell) + endif + if has('unix') && !has('win32unix') && !exists('$WSL_DISTRO_NAME') + # Linux: using job_start, so do not use shellescape. + Launch($"{Viewer()} {file}") + else + # Windows/WSL/Cygwin: NEEDS shellescape because Launch uses '!' + Launch($"{Viewer()} {shellescape(file, 1)}") + endif enddef # Uncomment this line to check for compilation errors early diff --git a/runtime/autoload/getscript.vim b/runtime/autoload/getscript.vim index 1e3b5b39..27a5a495 100644 --- a/runtime/autoload/getscript.vim +++ b/runtime/autoload/getscript.vim @@ -14,6 +14,7 @@ " 2024 Nov 12 by Vim Project: fix problems on Windows (#16036) " 2025 Feb 28 by Vim Project: add support for bzip3 (#16755) " 2025 May 11 by Vim Project: check network connectivity (#17249) +" 2025 Dec 21 by Vim Project: make the wget check more robust (#18987) " }}} " " GetLatestVimScripts: 642 1 :AutoInstall: getscript.vim @@ -58,7 +59,10 @@ endif " wget vs curl {{{2 if !exists("g:GetLatestVimScripts_wget") - if executable("wget") + if executable("wget.exe") + " enforce extension: windows powershell desktop version has a wget alias that hides wget.exe + let g:GetLatestVimScripts_wget= "wget.exe" + elseif executable("wget") let g:GetLatestVimScripts_wget= "wget" elseif executable("curl.exe") " enforce extension: windows powershell desktop version has a curl alias that hides curl.exe @@ -73,7 +77,7 @@ endif " options that wget and curl require: if !exists("g:GetLatestVimScripts_options") - if g:GetLatestVimScripts_wget == "wget" + if g:GetLatestVimScripts_wget =~ "wget" let g:GetLatestVimScripts_options= "-q -O" elseif g:GetLatestVimScripts_wget =~ "curl" let g:GetLatestVimScripts_options= "-s -o" diff --git a/runtime/autoload/gnat.vim b/runtime/autoload/gnat.vim index 0def6723..585be2e1 100644 --- a/runtime/autoload/gnat.vim +++ b/runtime/autoload/gnat.vim @@ -3,7 +3,7 @@ " Language: Ada (GNAT) " $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik -" Maintainer: Martin Krischi k +" Maintainer: Martin Krischi " Ned Okie " $Author: krischik $ " $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ diff --git a/runtime/autoload/hare.vim b/runtime/autoload/hare.vim index 479b0f68..d85a05b3 100644 --- a/runtime/autoload/hare.vim +++ b/runtime/autoload/hare.vim @@ -1,13 +1,13 @@ vim9script # Helper functions for Hare. -# Language: Hare -# Maintainer: Amelia Clarke -# Last Updated: 2025 Sep 06 -# Upstream: https://git.sr.ht/~sircmpwn/hare.vim +# Language: Hare +# Maintainer: Amelia Clarke +# Last Change: 2026 Jan 24 +# Upstream: https://git.sr.ht/~sircmpwn/hare.vim -# Returns the value of HAREPATH, if it exists. Otherwise, returns a safe -# default. +# Returns the value of $HAREPATH, if it exists. Otherwise, returns a safe +# default value. export def GetPath(): string var path: list if !empty($HAREPATH) @@ -18,24 +18,7 @@ export def GetPath(): string return '/usr/src/hare/stdlib,/usr/src/hare/third-party' endif endif - return mapnew(path, (_, n) => escape(n, ' ,;'))->join(',') -enddef - -# Converts a module identifier into a path. -export def IncludeExpr(): string - var path = trim(v:fname, ':', 2)->substitute('::', '/', 'g') - - # If the module cannot be found, it might be a member instead. Try removing - # the final component until a directory is found. - while !finddir(path) - const head = fnamemodify(path, ':h') - if head == '.' - break - endif - path = head - endwhile - - return path + return map(path, (_, n) => escape(n, ' ,;'))->join(',') enddef # Modifies quickfix or location list entries to refer to the correct paths after @@ -61,14 +44,14 @@ export def QuickFixPaths() SetList([], 'r', list) enddef -# Attempts to parse the directories in $HAREPATH from the output of `hare -# version -v`. Otherwise, returns an empty list. +# Attempts to parse a list of directories from the output of `hare version -v`. +# Otherwise, returns an empty list. def ParsePath(): list if !executable('hare') return [] endif - silent const lines = systemlist('hare version -v') + silent final lines = systemlist('hare version -v') const min = match(lines, '^HAREPATH') + 1 if min == 0 return [] @@ -76,7 +59,7 @@ def ParsePath(): list const max = match(lines, '^\S', min) return (max < 0 ? slice(lines, min) : slice(lines, min, max)) - ->mapnew((_, n) => matchstr(n, '^\s*\zs.*')) + ->map((_, n) => matchstr(n, '^\s*\zs.*')) enddef # vim: et sts=2 sw=2 ts=8 tw=80 diff --git a/runtime/autoload/haskellcomplete.vim b/runtime/autoload/haskellcomplete.vim index 759ff874..2b282090 100644 --- a/runtime/autoload/haskellcomplete.vim +++ b/runtime/autoload/haskellcomplete.vim @@ -3,10 +3,9 @@ " Maintainer: Daniel Campoverde " URL: https://github.com/alx741/haskellcomplete.vim " Last Change: 2019 May 14 - +" 2026 Feb 04 by Vim project: fix undefined buffer variable: #19259 " Usage: setlocal omnifunc=haskellcomplete#Complete - " Language extensions from: " https://hackage.haskell.org/package/Cabal-2.2.0.1/docs/Language-Haskell-Extension.html " @@ -15,12 +14,6 @@ " https://downloads.haskell.org/~ghc/8.4.3/docs/html/users_guide/flags.html - -" Available completions -let b:completingLangExtension = 0 -let b:completingOptionsGHC = 0 -let b:completingModule = 0 - function! haskellcomplete#Complete(findstart, base) if a:findstart let l:line = getline('.') @@ -52,7 +45,7 @@ function! haskellcomplete#Complete(findstart, base) return start endif - if b:completingLangExtension + if get(b:, 'completingLangExtension', 0) if a:base ==? "" " Return all possible Lang extensions return s:langExtensions @@ -68,7 +61,7 @@ function! haskellcomplete#Complete(findstart, base) endif - elseif b:completingOptionsGHC + elseif get(b:, 'completingOptionsGHC', 0) if a:base ==? "" " Return all possible GHC options return s:optionsGHC @@ -84,7 +77,7 @@ function! haskellcomplete#Complete(findstart, base) endif - elseif b:completingModule + elseif get(b:, 'completingModule', 0) if a:base ==? "" " Return all possible modules return s:commonModules diff --git a/runtime/autoload/python3complete.vim b/runtime/autoload/python3complete.vim index ea0a3313..3e54433f 100644 --- a/runtime/autoload/python3complete.vim +++ b/runtime/autoload/python3complete.vim @@ -448,7 +448,7 @@ class PyParser: def _parseassignment(self): assign='' tokentype, token, indent = self.donext() - if tokentype == tokenize.STRING or token == 'str': + if tokentype == tokenize.STRING or token == 'str': return '""' elif token == '(' or token == 'tuple': return '()' @@ -556,7 +556,7 @@ class PyParser: freshscope = True dbg("new scope: class") self.scope = self.scope.add(cls) - + elif token == 'import': imports = self._parseimportlist() for mod, alias in imports: @@ -578,7 +578,7 @@ class PyParser: elif tokentype == STRING: if freshscope: self.scope.doc(token) elif tokentype == NAME: - name,token = self._parsedotname(token) + name,token = self._parsedotname(token) if token == '=': stmt = self._parseassignment() dbg("parseassignment: %s = %s" % (name, stmt)) diff --git a/runtime/autoload/rustfmt.vim b/runtime/autoload/rustfmt.vim index 268a1c02..3d905296 100644 --- a/runtime/autoload/rustfmt.vim +++ b/runtime/autoload/rustfmt.vim @@ -1,7 +1,8 @@ " Author: Stephen Sugden " Last Modified: 2023-09-11 " Last Change: -" 2025 Oct 27 by Vim project don't use rustfmt as 'formatprg' by default +" 2025 Oct 27 by Vim project: don't use rustfmt as 'formatprg' by default +" 2026 Jan 25 by Vim project: don't hide rustfmt errors, restore default var " " " Adapted from https://github.com/fatih/vim-go @@ -69,6 +70,12 @@ function! s:RustfmtWriteMode() endfunction function! s:RustfmtConfigOptions() + let default = '--edition 2018' + + if !get(g:, 'rustfmt_find_toml', 0) + return default + endif + let l:rustfmt_toml = findfile('rustfmt.toml', expand('%:p:h') . ';') if l:rustfmt_toml !=# '' return '--config-path '.shellescape(fnamemodify(l:rustfmt_toml, ":p")) @@ -199,7 +206,7 @@ function! s:RunRustfmt(command, tmpname, from_writepre) echo "rust.vim: was not able to parse rustfmt messages. Here is the raw output:" echo "\n" for l:line in l:stderr - echo l:line + echomsg l:line endfor endif @@ -218,7 +225,10 @@ function! s:RunRustfmt(command, tmpname, from_writepre) " Open lwindow after we have changed back to the previous directory if l:open_lwindow == 1 + try lwindow + catch /^Vim\%((\S\+)\)\=:E776:/ + endtry endif call winrestview(l:view) diff --git a/runtime/autoload/sqlcomplete.vim b/runtime/autoload/sqlcomplete.vim index adbdbab8..4017ae9b 100644 --- a/runtime/autoload/sqlcomplete.vim +++ b/runtime/autoload/sqlcomplete.vim @@ -3,6 +3,7 @@ " Maintainer: David Fishburn " Version: 16.0 " Last Change: 2017 Oct 15 +" 2025 Nov 11 by Vim project: only set 'omnifunc' if dbext script was loaded #18716 " Homepage: http://www.vim.org/scripts/script.php?script_id=1572 " Usage: For detailed help " ":help sql.txt" @@ -98,12 +99,11 @@ " Set completion with CTRL-X CTRL-O to autoloaded function. " This check is in place in case this script is " sourced directly instead of using the autoload feature. -if exists('&omnifunc') - " Do not set the option if already set since this - " results in an E117 warning. - if &omnifunc == "" - setlocal omnifunc=sqlcomplete#Complete - endif +" +" Do not set the option if already set since this +" results in an E117 warning. +if exists('&omnifunc') && &omnifunc == "" && exists('g:loaded_dbext') + setlocal omnifunc=sqlcomplete#Complete endif if exists('g:loaded_sql_completion') diff --git a/runtime/autoload/tar.vim b/runtime/autoload/tar.vim index 74a5b38f..73829a2d 100644 --- a/runtime/autoload/tar.vim +++ b/runtime/autoload/tar.vim @@ -18,6 +18,8 @@ " 2025 May 19 by Vim Project: restore working directory after read/write " 2025 Jul 13 by Vim Project: warn with path traversal attacks " 2025 Jul 16 by Vim Project: update minimum vim version +" 2026 Feb 06 by Vim Project: consider 'nowrapscan' (#19333) +" 2026 Feb 07 by Vim Project: make the path traversal detection more robust (#19341) " " Contains many ideas from Michael Toren's " @@ -110,7 +112,7 @@ if !exists("g:tar_shq") endif let g:tar_secure=' -- ' -let g:tar_leading_pat='^\%([.]\{,2\}/\)\+' +let g:tar_leading_pat='\m^\%([.]\{,2\}/\)\+' " ---------------- " Functions: {{{1 @@ -226,7 +228,7 @@ fun! tar#Browse(tarfile) " remove tar: Removing leading '/' from member names " Note: the message could be localized - if search('^tar: ') > 0 || search(g:tar_leading_pat) > 0 + if search('\m^g\?tar: ', 'w') > 0 || search(g:tar_leading_pat, 'w') > 0 call append(3,'" Note: Path Traversal Attack detected!') let b:leading_slash = 1 " remove the message output diff --git a/runtime/autoload/tutor.vim b/runtime/autoload/tutor.vim index c3b5df37..a31f7468 100644 --- a/runtime/autoload/tutor.vim +++ b/runtime/autoload/tutor.vim @@ -211,7 +211,7 @@ function! tutor#TutorCmd(tutor_name) endif call tutor#SetupVim() - exe "drop ".l:to_open + exe "drop ".fnameescape(l:to_open) call tutor#EnableInteractive(v:true) endfunction diff --git a/runtime/autoload/typeset.vim b/runtime/autoload/typeset.vim index a1a80922..14bbcf03 100644 --- a/runtime/autoload/typeset.vim +++ b/runtime/autoload/typeset.vim @@ -2,7 +2,7 @@ vim9script # Language: Generic TeX typesetting engine # Maintainer: Nicola Vitacolonna -# Latest Revision: 2022 Aug 12 +# Latest Revision: 2026 Feb 19 # Constants and helpers {{{ const SLASH = !exists("+shellslash") || &shellslash ? '/' : '\' @@ -11,25 +11,25 @@ def Echo(msg: string, mode: string, label: string) redraw echo "\r" execute 'echohl' mode - echomsg printf('[%s] %s', label, msg) + echomsg $'[{label}] {msg}' echohl None enddef -def EchoMsg(msg: string, label = 'Notice') +def EchoMsg(msg: string, label = gettext('Notice')) Echo(msg, 'ModeMsg', label) enddef -def EchoWarn(msg: string, label = 'Warning') +def EchoWarn(msg: string, label = gettext('Warning')) Echo(msg, 'WarningMsg', label) enddef -def EchoErr(msg: string, label = 'Error') +def EchoErr(msg: string, label = gettext('Error')) Echo(msg, 'ErrorMsg', label) enddef # }}} # Track jobs {{{ -var running_jobs = {} # Dictionary of job IDs of jobs currently executing +var running_jobs: dict> = {} def AddJob(label: string, j: job) if !has_key(running_jobs, label) @@ -54,8 +54,8 @@ enddef def ProcessOutput(qfid: number, wd: string, efm: string, ch: channel, msg: string) # Make sure the quickfix list still exists if getqflist({'id': qfid}).id != qfid - EchoErr("Quickfix list not found, stopping the job") - call job_stop(ch_getjob(ch)) + EchoErr(gettext("Quickfix list not found, stopping the job")) + job_stop(ch_getjob(ch)) return endif @@ -74,13 +74,13 @@ def ExitCb(label: string, jobid: job, exitStatus: number) if exitStatus == 0 botright cwindow - EchoMsg('Success!', label) + EchoMsg(gettext('Success!'), label) elseif exitStatus < 0 - EchoWarn('Job terminated', label) + EchoWarn(gettext('Job terminated'), label) else botright copen wincmd p - EchoWarn('There are errors.', label) + EchoWarn(gettext('There are errors.'), label) endif enddef # }}} @@ -106,31 +106,81 @@ enddef # # This function searches for the magic line in the first ten lines of the # given buffer, and returns the full path of the root document. -# -# NOTE: the value of "% !TEX root" *must* be a relative path. export def FindRootDocument(bufname: string = bufname("%")): string - const bufnr = bufnr(bufname) + var docpath = fnamemodify(bufname, ":p") + var bufnr = bufnr(bufname) + var header: list + var rootpath = docpath + + if bufexists(bufnr) + header = getbufline(bufnr, 1, 10) + elseif filereadable(bufname) + header = readfile(bufname, "", 10) + else + return simplify(rootpath) + endif + + # Search for magic line `% !TEX root = ...` in the first ten lines + var idx = match(header, '^\s*%\s\+!TEX\s\+root\s*=\s*\S') - if !bufexists(bufnr) - return bufname + if idx > -1 + rootpath = matchstr(header[idx], '!TEX\s\+root\s*=\s*\zs.*$') + + if !isabsolutepath(rootpath) # Path is relative to the buffer's path + rootpath = fnamemodify(docpath, ":h") .. SLASH .. rootpath + endif endif - var rootpath = fnamemodify(bufname(bufnr), ':p') + return simplify(rootpath) +enddef + +# ConTeXt documents may specify an output directory in a comment using the +# following syntax: +# +# runpath=texruns: +# +# This function looks for such a comment in the first ten lines of the given +# buffer, and returns the full path of the output directory. If the comment is +# not found then the output directory coincides with the directory of the +# buffer. +export def GetOutputDirectory(bufname: string = bufname("%")): string + var basedir = fnamemodify(bufname, ':p:h') + var bufnr = bufnr(bufname) + var header: list + var outdir = basedir + + if bufexists(bufnr) + header = getbufline(bufnr, 1, 10) + elseif filereadable(bufname) + header = readfile(bufname, "", 10) + else + return simplify(outdir) + endif + + # Search for output path in the first ten lines + var idx = match(header, '^\s*%.*\ -1 - const main = matchstr(header[idx], '!TEX\s\+root\s*=\s*\zs.*$') - rootpath = simplify(fnamemodify(rootpath, ":h") .. SLASH .. main) + outdir = matchstr(header[idx], '\, - path: string, - efm: string, - env: dict = {} -): bool - var fp = fnamemodify(path, ":p") - var wd = fnamemodify(fp, ":h") + label: string, + Cmd: func(string): list, + path: string, + efm: string, + env: dict = {} + ): bool + var fp = fnamemodify(path, ':p') + var name = fnamemodify(fp, ':t') + var wd = fnamemodify(fp, ':h') var qfid = NewQuickfixList(fp) if qfid == -1 - EchoErr('Could not create quickfix list', label) + EchoErr(gettext('Could not create quickfix list'), label) return false endif if !filereadable(fp) - EchoErr(printf('File not readable: %s', fp), label) + var msg = gettext('File not readable:') + EchoErr($'{msg} {fp}', label) return false endif - var jobid = job_start(Cmd(path), { + # Make sure to pass only the base name of the path to Cmd as this usually + # works better with TeX commands (note that the command is executed inside + # the file's directory). For instance, ConTeXt writes the path in .synctex + # files, and full paths break syncing from the editor to the viewer. + var jobid = job_start(Cmd(name), { env: env, cwd: wd, in_io: "null", callback: (c, m) => ProcessOutput(qfid, wd, efm, c, m), close_cb: CloseCb, exit_cb: (j, e) => ExitCb(label, j, e), - }) + }) if job_status(jobid) ==# "fail" - EchoErr("Failed to start job", label) + EchoErr(gettext("Failed to start job"), label) return false endif AddJob(label, jobid) - EchoMsg('Typesetting...', label) + EchoMsg(gettext('Typesetting...'), label) return true enddef export def JobStatus(label: string) - EchoMsg('Jobs still running: ' .. string(len(GetRunningJobs(label))), label) + var msg = gettext('Jobs still running:') + EchoMsg($'{msg} {len(GetRunningJobs(label))}', label) enddef export def StopJobs(label: string) @@ -196,7 +253,7 @@ export def StopJobs(label: string) job_stop(job) endfor - EchoMsg('Done.', label) + EchoMsg(gettext('Done.'), label) enddef # Typeset the specified buffer @@ -211,20 +268,20 @@ enddef # true if the job is started successfully; # false otherwise. export def TypesetBuffer( - name: string, - Cmd: func(string): list, - env = {}, - label = 'Typeset' -): bool - const bufname = bufname(name) + name: string, + Cmd: func(string): list, + env = {}, + label = gettext('Typeset') + ): bool + var bufname = bufname(name) if empty(bufname) - EchoErr('Please save the buffer first.', label) + EchoErr(gettext('Please save the buffer first.'), label) return false endif - const efm = getbufvar(bufnr(bufname), "&efm") - const rootpath = FindRootDocument(bufname) + var efm = getbufvar(bufnr(bufname), "&efm") + var rootpath = FindRootDocument(bufname) return Typeset('ConTeXt', Cmd, rootpath, efm, env) enddef diff --git a/runtime/autoload/vimgoto.vim b/runtime/autoload/vimgoto.vim index cb41cc7d..32756e07 100644 --- a/runtime/autoload/vimgoto.vim +++ b/runtime/autoload/vimgoto.vim @@ -4,7 +4,8 @@ vim9script # Contributers: @lacygoill # Shane-XB-Qian # Andrew Radev -# Last Change: 2025 Oct 17 +# thinca +# Last Change: 2026 Feb 10 # # Vim script to handle jumping to the targets of several types of Vim commands # (:import, :packadd, :runtime, :colorscheme), and to autoloaded functions of @@ -41,9 +42,9 @@ export def Find(editcmd: string) #{{{2 if stridx(curfunc, '#') >= 0 var parts = split(curfunc, '#') var path = $"autoload/{join(parts[0 : -2], '/')}.vim" - var resolved_path = globpath(&runtimepath, path) + var resolved_path = globpath(&runtimepath, path, 1, 1) - if resolved_path != '' + if !resolved_path->empty() var function_pattern: string = $'^\s*\%(:\s*\)\=fun\%[ction]!\=\s\+\zs{curfunc}(' resolved_path->Open(editcmd, function_pattern) endif diff --git a/runtime/autoload/xmlformat.vim b/runtime/autoload/xmlformat.vim index c89c8784..c541e657 100644 --- a/runtime/autoload/xmlformat.vim +++ b/runtime/autoload/xmlformat.vim @@ -1,5 +1,5 @@ " Vim plugin for formatting XML -" Last Change: 2020 Jan 06 +" Last Change: 2023 March 15th " Version: 0.3 " Author: Christian Brabandt " Repository: https://github.com/chrisbra/vim-xml-ftplugin @@ -37,13 +37,17 @@ func! xmlformat#Format() abort " Keep empty input lines? if empty(line) call add(result, '') + let current += 1 continue elseif line !~# '<[/]\?[^>]*>' - let nextmatch = match(list, '<[/]\?[^>]*>', current) - if nextmatch > -1 - let line .= ' '. join(list[(current + 1):(nextmatch-1)], " ") - call remove(list, current+1, nextmatch-1) + let nextmatch = match(list, '^\s*$\|<[/]\?[^>]*>', current) + if nextmatch > -1 + let lineEnd = nextmatch + else + let lineEnd = len(list) endif + let line .= ' '. join(list[(current + 1):(lineEnd-1)], " ") + call remove(list, current+1, lineEnd-1) endif " split on `>`, but don't split on very first opening < " this means, items can be like ['', 'tag content'] @@ -79,9 +83,13 @@ func! xmlformat#Format() abort if s:EndTag(t[1]) call s:DecreaseIndent() endif - "for y in t[1:] - let result+=s:FormatContent(t[1:]) - "endfor + let result+=s:FormatContent(t[1:]) + if s:IsTag(t[1]) + let lastitem = t[1] + continue + endif + elseif s:IsComment(item) + let result+=s:FormatContent([item]) else call add(result, s:Indent(item)) endif @@ -94,7 +102,7 @@ func! xmlformat#Format() abort if !empty(result) let lastprevline = getline(v:lnum + count_orig) let delete_lastline = v:lnum + count_orig - 1 == line('$') - exe v:lnum. ",". (v:lnum + count_orig - 1). 'd' + exe 'silent ' .. v:lnum. ",". (v:lnum + count_orig - 1). 'd' call append(v:lnum - 1, result) " Might need to remove the last line, if it became empty because of the " append() call diff --git a/runtime/autoload/zip.vim b/runtime/autoload/zip.vim index 49e4e819..e81308fa 100644 --- a/runtime/autoload/zip.vim +++ b/runtime/autoload/zip.vim @@ -1,4 +1,4 @@ - " zip.vim: Handles browsing zipfiles +" zip.vim: Handles browsing zipfiles " AUTOLOAD PORTION " Date: 2024 Aug 21 " Version: 34 @@ -17,6 +17,9 @@ " 2025 Mar 11 by Vim Project: handle filenames with leading '-' correctly " 2025 Jul 12 by Vim Project: drop ../ on write to prevent path traversal attacks " 2025 Sep 22 by Vim Project: support PowerShell Core +" 2025 Dec 20 by Vim Project: use :lcd instead of :cd +" 2026 Feb 08 by Vim Project: use system() instead of :! +" 2026 Mar 08 by Vim Project: Make ZipUpdatePS() check for powershell " License: Vim License (see vim's :help license) " Copyright: Copyright (C) 2005-2019 Charles E. Campbell {{{1 " Permission is hereby granted to use and distribute this code, @@ -138,7 +141,7 @@ endfunction function! s:ZipReadPS(zipfile, fname, tempfile) " Read a filename within a zipped file to a temporary file. " Equivalent to `unzip -p -- zipfile fname > tempfile` - if a:fname =~ '/' + if &shell =~ 'pwsh' call s:Mess('WarningMsg', "***warning*** PowerShell can display, but cannot update, files in archive subfolders") endif let cmds = [ @@ -157,7 +160,7 @@ endfunction function! s:ZipUpdatePS(zipfile, fname) " Update a filename within a zipped file " Equivalent to `zip -u zipfile fname` - if a:fname =~ '/' + if &shell =~ 'pwsh' && a:fname =~ '/' call s:Mess('Error', "***error*** PowerShell cannot update files in archive subfolders") return ':' endif @@ -334,7 +337,8 @@ fun! zip#Read(fname,mode) let temp = tempname() let fn = expand('%:p') - let gnu_cmd = 'sil !' . g:zip_unzipcmd . ' -p -- ' . s:Escape(zipfile, 1) . ' ' . s:Escape(fname, 1) . ' > ' . s:Escape(temp, 1) + let gnu_cmd = g:zip_unzipcmd . ' -p -- ' . s:Escape(zipfile, 0) . ' ' . s:Escape(fname, 0) . ' > ' . s:Escape(temp, 0) + let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')' let ps_cmd = 'sil !' . s:ZipReadPS(zipfile, fname, temp) call s:TryExecGnuFallBackToPs(g:zip_unzipcmd, gnu_cmd, ps_cmd) @@ -371,7 +375,7 @@ fun! zip#Write(fname) call mkdir(tmpdir,"p") " attempt to change to the indicated directory - if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot cd to temporary directory") + if s:ChgDir(tmpdir,s:ERROR,"(zip#Write) cannot lcd to temporary directory") return endif @@ -380,7 +384,7 @@ fun! zip#Write(fname) call delete("_ZIPVIM_", "rf") endif call mkdir("_ZIPVIM_") - cd _ZIPVIM_ + lcd _ZIPVIM_ if has("unix") let zipfile = substitute(a:fname,'zipfile://\(.\{-}\)::[^\\].*$','\1','') @@ -390,7 +394,7 @@ fun! zip#Write(fname) let fname = substitute(a:fname,'^.\{-}zipfile://.\{-}::\([^\\].*\)$','\1','') endif if fname =~ '^[.]\{1,2}/' - let gnu_cmd = g:zip_zipcmd . ' -d ' . s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0) + let gnu_cmd = g:zip_zipcmd . ' -d ' . s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0) let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')' let ps_cmd = $"call system({s:Escape(s:ZipDeleteFilePS(zipfile, fname), 1)})" call s:TryExecGnuFallBackToPs(g:zip_zipcmd, gnu_cmd, ps_cmd) @@ -419,7 +423,7 @@ fun! zip#Write(fname) let fname = substitute(fname, '[', '[[]', 'g') endif - let gnu_cmd = g:zip_zipcmd . ' -u '. s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0) + let gnu_cmd = g:zip_zipcmd . ' -u '. s:Escape(fnamemodify(zipfile,":p"),0) . ' ' . s:Escape(fname,0) let gnu_cmd = 'call system(''' . substitute(gnu_cmd, "'", "''", 'g') . ''')' let ps_cmd = s:ZipUpdatePS(s:Escape(fnamemodify(zipfile, ':p'), 0), s:Escape(fname, 0)) let ps_cmd = 'call system(''' . substitute(ps_cmd, "'", "''", 'g') . ''')' @@ -455,7 +459,7 @@ fun! zip#Write(fname) endif " cleanup and restore current directory - cd .. + lcd .. call delete("_ZIPVIM_", "rf") call s:ChgDir(curdir,s:WARNING,"(zip#Write) unable to return to ".curdir."!") call delete(tmpdir, "rf") @@ -536,7 +540,7 @@ endfun " s:ChgDir: {{{2 fun! s:ChgDir(newdir,errlvl,errmsg) try - exe "cd ".fnameescape(a:newdir) + exe "lcd ".fnameescape(a:newdir) catch /^Vim\%((\a\+)\)\=:E344/ redraw! if a:errlvl == s:NOTE diff --git a/runtime/colors/catppuccin.vim b/runtime/colors/catppuccin.vim new file mode 100644 index 00000000..96e9c963 --- /dev/null +++ b/runtime/colors/catppuccin.vim @@ -0,0 +1,808 @@ +" Name: Catppuccin Latte (for light) and Mocha (for dark) +" Description: Soothing pastel theme for the high-spirited! +" Author: The Catppuccin Community +" Maintainer: Mao-Yining +" URL: https://www.github.com/vim/colorschemes +" Last Change: 2026 Jan 31 + +" Generated by Colortemplate v3.0.0-beta10 + +hi clear +let g:colors_name = 'catppuccin' + +let s:t_Co = has('gui_running') ? 16777216 : str2nr(&t_Co) +let s:tgc = has('termguicolors') && &termguicolors + +hi! link Boolean Constant +hi! link CursorLineFold FoldColumn +hi! link CursorLineSign SignColumn +hi! link Debug Special +hi! link Define PreProc +hi! link Float Constant +hi! link Ignore Comment +hi! link IncSearch CurSearch +hi! link LineNrAbove LineNr +hi! link LineNrBelow LineNr +hi! link Number Constant +hi! link PopupNotification WarningMsg +hi! link PreCondit PreProc +hi! link SpecialChar Special +hi! link SpecialComment Special +hi! link SpecialKey NonText +hi! link StatusLineTerm StatusLine +hi! link StatusLineTermNC StatusLineNC +hi! link Terminal Normal +hi! link Typedef Type + +if &background == 'dark' + hi Normal guifg=#cdd6f4 guibg=#1e1e2e guisp=NONE gui=NONE ctermfg=189 ctermbg=233 cterm=NONE term=NONE + hi Added guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE + hi Bold guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold + hi Changed guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi Character guifg=#94e2d5 guibg=NONE guisp=NONE gui=NONE ctermfg=158 ctermbg=NONE cterm=NONE term=NONE + hi ColorColumn guifg=NONE guibg=#181825 guisp=NONE gui=NONE ctermfg=NONE ctermbg=232 cterm=NONE term=reverse + hi Comment guifg=#9399b2 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=bold + hi Conceal guifg=#7f849c guibg=NONE guisp=NONE gui=NONE ctermfg=102 ctermbg=NONE cterm=NONE term=NONE + hi Conditional guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi Constant guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE + hi CurSearch guifg=#cdd6f4 guibg=#89556b guisp=NONE gui=NONE ctermfg=189 ctermbg=126 cterm=NONE term=reverse + hi Cursor guifg=#1e1e2e guibg=#f5e0dc guisp=NONE gui=NONE ctermfg=233 ctermbg=224 cterm=NONE term=reverse + hi CursorColumn guifg=NONE guibg=#181825 guisp=NONE gui=NONE ctermfg=NONE ctermbg=232 cterm=NONE term=NONE + hi CursorIM guifg=#1e1e2e guibg=#cba6f7 guisp=NONE gui=NONE ctermfg=233 ctermbg=183 cterm=NONE term=NONE + hi CursorLine guifg=NONE guibg=#2a2b3c guisp=NONE gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE term=underline + hi CursorLineNr guifg=#b4befe guibg=NONE guisp=NONE gui=NONE ctermfg=147 ctermbg=NONE cterm=NONE term=bold + hi Delimiter guifg=#9399b2 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE + hi DiffAdd guifg=NONE guibg=#364143 guisp=NONE gui=NONE ctermfg=NONE ctermbg=22 cterm=NONE term=reverse + hi DiffChange guifg=NONE guibg=#25293c guisp=NONE gui=NONE ctermfg=NONE ctermbg=235 cterm=NONE term=NONE + hi DiffDelete guifg=NONE guibg=#443244 guisp=NONE gui=NONE ctermfg=NONE ctermbg=52 cterm=NONE term=reverse + hi DiffText guifg=NONE guibg=#3e4b6b guisp=NONE gui=NONE ctermfg=NONE ctermbg=23 cterm=NONE term=reverse + hi Directory guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi EndOfBuffer guifg=#45475a guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE term=NONE + hi Error guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=bold,reverse + hi ErrorMsg guifg=#f38ba8 guibg=NONE guisp=NONE gui=bold ctermfg=211 ctermbg=NONE cterm=bold term=bold,reverse + hi Exception guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi FoldColumn guifg=#6c7086 guibg=NONE guisp=NONE gui=NONE ctermfg=59 ctermbg=NONE cterm=NONE term=NONE + hi Folded guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi Function guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi Identifier guifg=#f2cdcd guibg=NONE guisp=NONE gui=NONE ctermfg=181 ctermbg=NONE cterm=NONE term=NONE + hi Include guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi Italic guifg=NONE guibg=NONE guisp=NONE gui=italic ctermfg=NONE ctermbg=NONE cterm=italic term=italic + hi Keyword guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi Label guifg=#74c7ec guibg=NONE guisp=NONE gui=NONE ctermfg=117 ctermbg=NONE cterm=NONE term=NONE + hi LineNr guifg=#45475a guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE term=NONE + hi Macro guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi MatchParen guifg=#fab387 guibg=NONE guisp=NONE gui=bold ctermfg=216 ctermbg=NONE cterm=bold term=bold,underline + hi ModeMsg guifg=#cdd6f4 guibg=NONE guisp=NONE gui=bold ctermfg=189 ctermbg=NONE cterm=bold term=bold + hi MoreMsg guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi NonText guifg=#6c7086 guibg=NONE guisp=NONE gui=NONE ctermfg=59 ctermbg=NONE cterm=NONE term=NONE + hi Operator guifg=#89dceb guibg=NONE guisp=NONE gui=NONE ctermfg=116 ctermbg=NONE cterm=NONE term=NONE + hi Pmenu guifg=#9399b2 guibg=#181825 guisp=NONE gui=NONE ctermfg=103 ctermbg=232 cterm=NONE term=reverse + hi PmenuExtra guifg=#6c7086 guibg=#181825 guisp=NONE gui=NONE ctermfg=59 ctermbg=232 cterm=NONE term=NONE + hi PmenuExtraSel guifg=#6c7086 guibg=#313244 guisp=NONE gui=bold ctermfg=59 ctermbg=236 cterm=bold term=bold + hi PmenuMatch guifg=#cdd6f4 guibg=NONE guisp=NONE gui=bold ctermfg=189 ctermbg=NONE cterm=bold term=bold + hi PmenuMatchSel guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold + hi PmenuSbar guifg=NONE guibg=#313244 guisp=NONE gui=NONE ctermfg=NONE ctermbg=236 cterm=NONE term=reverse + hi PmenuSel guifg=NONE guibg=#313244 guisp=NONE gui=bold ctermfg=NONE ctermbg=236 cterm=bold term=bold + hi PmenuThumb guifg=NONE guibg=#6c7086 guisp=NONE gui=NONE ctermfg=NONE ctermbg=59 cterm=NONE term=NONE + hi PreInsert guifg=#9399b2 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE + hi PreProc guifg=#f5c2e7 guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE term=NONE + hi Question guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=standout + hi QuickFixLine guifg=NONE guibg=#52476a guisp=NONE gui=bold ctermfg=189 ctermbg=60 cterm=bold term=NONE + hi Removed guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE + hi Repeat guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi Search guifg=#cdd6f4 guibg=#3e5767 guisp=NONE gui=NONE ctermfg=189 ctermbg=24 cterm=NONE term=reverse + hi SignColumn guifg=#45475a guibg=NONE guisp=NONE gui=NONE ctermfg=240 ctermbg=NONE cterm=NONE term=reverse + hi Special guifg=#f5c2e7 guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE term=NONE + hi SpellBad guifg=NONE guibg=NONE guisp=#f38ba8 gui=undercurl ctermfg=211 ctermbg=NONE cterm=underline term=underline + hi SpellCap guifg=NONE guibg=NONE guisp=#f9e2af gui=undercurl ctermfg=222 ctermbg=NONE cterm=underline term=underline + hi SpellLocal guifg=NONE guibg=NONE guisp=#89b4fa gui=undercurl ctermfg=111 ctermbg=NONE cterm=underline term=underline + hi SpellRare guifg=NONE guibg=NONE guisp=#a6e3a1 gui=undercurl ctermfg=114 ctermbg=NONE cterm=underline term=underline + hi Statement guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi StatusLine guifg=#cdd6f4 guibg=#11111b guisp=NONE gui=NONE ctermfg=189 ctermbg=16 cterm=NONE term=bold,reverse + hi StatusLineNC guifg=#45475a guibg=#181825 guisp=NONE gui=NONE ctermfg=240 ctermbg=232 cterm=NONE term=bold,underline + hi StorageClass guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE + hi String guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE + hi Structure guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE + hi TabLine guifg=#6c7086 guibg=#11111b guisp=NONE gui=NONE ctermfg=59 ctermbg=16 cterm=NONE term=bold,underline + hi TabLineFill guifg=NONE guibg=#181825 guisp=NONE gui=NONE ctermfg=NONE ctermbg=232 cterm=NONE term=NONE + hi TabLineSel guifg=#cdd6f4 guibg=#1e1e2e guisp=NONE gui=NONE ctermfg=189 ctermbg=233 cterm=NONE term=bold,reverse + hi Tag guifg=#b4befe guibg=NONE guisp=NONE gui=bold ctermfg=147 ctermbg=NONE cterm=bold term=bold + hi Title guifg=#89b4fa guibg=NONE guisp=NONE gui=bold ctermfg=111 ctermbg=NONE cterm=bold term=NONE + hi TitleBar guifg=#cdd6f4 guibg=#181825 guisp=NONE gui=NONE ctermfg=189 ctermbg=232 cterm=NONE term=NONE + hi TitleBarNC guifg=#6c7086 guibg=#11111b guisp=NONE gui=NONE ctermfg=59 ctermbg=16 cterm=NONE term=NONE + hi Todo guifg=#f2cdcd guibg=NONE guisp=NONE gui=bold ctermfg=181 ctermbg=NONE cterm=bold term=bold,reverse + hi ToolbarButton guifg=#f5e0dc guibg=NONE guisp=NONE gui=NONE ctermfg=224 ctermbg=NONE cterm=NONE term=bold,reverse + hi ToolbarLine guifg=NONE guibg=NONE guisp=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE term=reverse + hi Type guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE + hi Underlined guifg=NONE guibg=NONE guisp=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline term=underline + hi VertSplit guifg=#11111b guibg=NONE guisp=NONE gui=NONE ctermfg=16 ctermbg=NONE cterm=NONE term=NONE + hi Visual guifg=NONE guibg=#45475a guisp=NONE gui=NONE ctermfg=240 ctermbg=189 cterm=reverse term=reverse + hi VisualNOS guifg=NONE guibg=#45475a guisp=NONE gui=bold ctermfg=NONE ctermbg=240 cterm=bold term=NONE + hi WarningMsg guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=standout + hi WildMenu guifg=NONE guibg=#6c7086 guisp=NONE gui=NONE ctermfg=NONE ctermbg=59 cterm=NONE term=bold + hi csvCol0 guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE + hi csvCol1 guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE + hi csvCol2 guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE + hi csvCol3 guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE + hi csvCol4 guifg=#89dceb guibg=NONE guisp=NONE gui=NONE ctermfg=116 ctermbg=NONE cterm=NONE term=NONE + hi csvCol5 guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi csvCol6 guifg=#b4befe guibg=NONE guisp=NONE gui=NONE ctermfg=147 ctermbg=NONE cterm=NONE term=NONE + hi csvCol7 guifg=#cba6f7 guibg=NONE guisp=NONE gui=NONE ctermfg=183 ctermbg=NONE cterm=NONE term=NONE + hi csvCol8 guifg=#f5c2e7 guibg=NONE guisp=NONE gui=NONE ctermfg=225 ctermbg=NONE cterm=NONE term=NONE + hi debugBreakpoint guifg=#6c7086 guibg=#1e1e2e guisp=NONE gui=NONE ctermfg=59 ctermbg=233 cterm=NONE term=NONE + hi debugPC guifg=NONE guibg=#11111b guisp=NONE gui=NONE ctermfg=NONE ctermbg=16 cterm=NONE term=NONE + hi diffAdded guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE + hi diffChanged guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi diffFile guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi diffIndexLine guifg=#94e2d5 guibg=NONE guisp=NONE gui=NONE ctermfg=158 ctermbg=NONE cterm=NONE term=NONE + hi diffLine guifg=#6c7086 guibg=NONE guisp=NONE gui=NONE ctermfg=59 ctermbg=NONE cterm=NONE term=NONE + hi diffNewFile guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE + hi diffOldFile guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE + hi diffRemoved guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE + hi lCursor guifg=#1e1e2e guibg=#f38ba8 guisp=NONE gui=NONE ctermfg=233 ctermbg=211 cterm=NONE term=NONE + hi markdownCode guifg=#f2cdcd guibg=NONE guisp=NONE gui=NONE ctermfg=181 ctermbg=NONE cterm=NONE term=NONE + hi markdownCodeBlock guifg=#f2cdcd guibg=NONE guisp=NONE gui=NONE ctermfg=181 ctermbg=NONE cterm=NONE term=NONE + hi markdownH1 guifg=#f38ba8 guibg=NONE guisp=NONE gui=NONE ctermfg=211 ctermbg=NONE cterm=NONE term=NONE + hi markdownH2 guifg=#fab387 guibg=NONE guisp=NONE gui=NONE ctermfg=216 ctermbg=NONE cterm=NONE term=NONE + hi markdownH3 guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE + hi markdownH4 guifg=#a6e3a1 guibg=NONE guisp=NONE gui=NONE ctermfg=114 ctermbg=NONE cterm=NONE term=NONE + hi markdownH5 guifg=#74c7ec guibg=NONE guisp=NONE gui=NONE ctermfg=117 ctermbg=NONE cterm=NONE term=NONE + hi markdownH6 guifg=#b4befe guibg=NONE guisp=NONE gui=NONE ctermfg=147 ctermbg=NONE cterm=NONE term=NONE + hi markdownHeadingDelimiter guifg=#fab387 guibg=NONE guisp=NONE gui=bold ctermfg=216 ctermbg=NONE cterm=bold term=bold + hi markdownLinkText guifg=#89b4fa guibg=NONE guisp=NONE gui=underline ctermfg=111 ctermbg=NONE cterm=underline term=underline + hi qfFileName guifg=#89b4fa guibg=NONE guisp=NONE gui=NONE ctermfg=111 ctermbg=NONE cterm=NONE term=NONE + hi qfLineNr guifg=#f9e2af guibg=NONE guisp=NONE gui=NONE ctermfg=222 ctermbg=NONE cterm=NONE term=NONE + + if s:tgc || s:t_Co >= 256 + if s:tgc + hi QuickFixLine cterm=NONE + hi Visual cterm=NONE + endif + finish + endif + + if s:t_Co >= 16 + hi Normal ctermfg=White ctermbg=Black cterm=NONE + hi Added ctermfg=Green ctermbg=NONE cterm=NONE + hi Bold ctermfg=NONE ctermbg=NONE cterm=bold + hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE + hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi ColorColumn ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi Comment ctermfg=Grey ctermbg=NONE cterm=NONE + hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE + hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi CurSearch ctermfg=White ctermbg=Red cterm=NONE + hi Cursor ctermfg=Black ctermbg=Yellow cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi CursorIM ctermfg=Black ctermbg=DarkMagenta cterm=NONE + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi CursorLineNr ctermfg=White ctermbg=NONE cterm=NONE + hi Delimiter ctermfg=Grey ctermbg=NONE cterm=NONE + hi DiffAdd ctermfg=Black ctermbg=DarkGreen cterm=NONE + hi DiffChange ctermfg=Black ctermbg=DarkYellow cterm=NONE + hi DiffDelete ctermfg=Black ctermbg=DarkRed cterm=NONE + hi DiffText ctermfg=Black ctermbg=DarkCyan cterm=NONE + hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE + hi EndOfBuffer ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Error ctermfg=Red ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold + hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi FoldColumn ctermfg=Grey ctermbg=NONE cterm=NONE + hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE + hi Function ctermfg=Blue ctermbg=NONE cterm=NONE + hi Identifier ctermfg=Yellow ctermbg=NONE cterm=NONE + hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Italic ctermfg=NONE ctermbg=NONE cterm=italic + hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi LineNr ctermfg=Grey ctermbg=NONE cterm=NONE + hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi ModeMsg ctermfg=White ctermbg=NONE cterm=bold + hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE + hi NonText ctermfg=Grey ctermbg=NONE cterm=NONE + hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE + hi Pmenu ctermfg=Grey ctermbg=DarkGrey cterm=NONE + hi PmenuExtra ctermfg=Grey ctermbg=DarkGrey cterm=NONE + hi PmenuExtraSel ctermfg=Grey ctermbg=DarkYellow cterm=bold + hi PmenuMatch ctermfg=White ctermbg=NONE cterm=bold + hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold + hi PmenuSbar ctermfg=NONE ctermbg=DarkYellow cterm=NONE + hi PmenuSel ctermfg=NONE ctermbg=DarkYellow cterm=bold + hi PmenuThumb ctermfg=NONE ctermbg=Grey cterm=NONE + hi PreInsert ctermfg=Grey ctermbg=NONE cterm=NONE + hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE + hi Question ctermfg=Blue ctermbg=NONE cterm=NONE + hi QuickFixLine ctermfg=Black ctermbg=Magenta cterm=bold + hi Removed ctermfg=Red ctermbg=NONE cterm=NONE + hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Search ctermfg=White ctermbg=DarkBlue cterm=NONE + hi SignColumn ctermfg=Black ctermbg=NONE cterm=NONE + hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE + hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline + hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline + hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline + hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline + hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi StatusLine ctermfg=White ctermbg=DarkGrey cterm=bold,reverse + hi StatusLineNC ctermfg=Grey ctermbg=DarkGrey cterm=NONE + hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE + hi String ctermfg=Green ctermbg=NONE cterm=NONE + hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE + hi TabLine ctermfg=Grey ctermbg=Black cterm=NONE + hi TabLineFill ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi TabLineSel ctermfg=White ctermbg=Black cterm=NONE + hi Tag ctermfg=LightGrey ctermbg=NONE cterm=bold + hi Title ctermfg=Blue ctermbg=NONE cterm=bold + hi TitleBar ctermfg=White ctermbg=DarkGrey cterm=NONE + hi TitleBarNC ctermfg=Grey ctermbg=Black cterm=NONE + hi Todo ctermfg=Yellow ctermbg=NONE cterm=bold + hi ToolbarButton ctermfg=Yellow ctermbg=NONE cterm=NONE + hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE + hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE + hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline + hi VertSplit ctermfg=Grey ctermbg=NONE cterm=NONE + hi Visual ctermfg=Blue ctermbg=Black cterm=bold,reverse + hi VisualNOS ctermfg=NONE ctermbg=Black cterm=bold + hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=NONE ctermbg=Grey cterm=NONE + hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE + hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE + hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE + hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE + hi csvCol6 ctermfg=LightGrey ctermbg=NONE cterm=NONE + hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE + hi debugBreakpoint ctermfg=Grey ctermbg=Black cterm=NONE + hi debugPC ctermfg=NONE ctermbg=Black cterm=NONE + hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE + hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi diffLine ctermfg=Grey ctermbg=NONE cterm=NONE + hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE + hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE + hi lCursor ctermfg=Black ctermbg=Red cterm=NONE + hi markdownCode ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownCodeBlock ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE + hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE + hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi markdownH6 ctermfg=LightGrey ctermbg=NONE cterm=NONE + hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline + hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE + hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE + finish + endif + + if s:t_Co >= 8 + hi Normal ctermfg=White ctermbg=Black cterm=NONE + hi Added ctermfg=Green ctermbg=NONE cterm=NONE + hi Bold ctermfg=NONE ctermbg=NONE cterm=bold + hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE + hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi ColorColumn ctermfg=Black ctermbg=Grey cterm=NONE + hi Comment ctermfg=Grey ctermbg=NONE cterm=NONE + hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE + hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi CurSearch ctermfg=White ctermbg=Red cterm=NONE + hi Cursor ctermfg=Black ctermbg=Yellow cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi CursorIM ctermfg=Black ctermbg=DarkMagenta cterm=NONE + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi CursorLineNr ctermfg=White ctermbg=NONE cterm=NONE + hi Delimiter ctermfg=Grey ctermbg=NONE cterm=NONE + hi DiffAdd ctermfg=Black ctermbg=DarkGreen cterm=NONE + hi DiffChange ctermfg=Black ctermbg=DarkYellow cterm=NONE + hi DiffDelete ctermfg=Black ctermbg=DarkRed cterm=NONE + hi DiffText ctermfg=Black ctermbg=DarkCyan cterm=NONE + hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE + hi EndOfBuffer ctermfg=Grey ctermbg=NONE cterm=NONE + hi Error ctermfg=Red ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold + hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi FoldColumn ctermfg=Grey ctermbg=NONE cterm=NONE + hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE + hi Function ctermfg=Blue ctermbg=NONE cterm=NONE + hi Identifier ctermfg=Yellow ctermbg=NONE cterm=NONE + hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Italic ctermfg=NONE ctermbg=NONE cterm=italic + hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi LineNr ctermfg=Grey ctermbg=NONE cterm=NONE + hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi ModeMsg ctermfg=White ctermbg=NONE cterm=bold + hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE + hi NonText ctermfg=Grey ctermbg=NONE cterm=NONE + hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE + hi Pmenu ctermfg=Grey ctermbg=DarkGrey cterm=NONE + hi PmenuExtra ctermfg=Grey ctermbg=DarkGrey cterm=NONE + hi PmenuExtraSel ctermfg=Grey ctermbg=DarkYellow cterm=bold + hi PmenuMatch ctermfg=White ctermbg=NONE cterm=bold + hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold + hi PmenuSbar ctermfg=NONE ctermbg=DarkYellow cterm=NONE + hi PmenuSel ctermfg=NONE ctermbg=DarkYellow cterm=bold + hi PmenuThumb ctermfg=NONE ctermbg=Grey cterm=NONE + hi PreInsert ctermfg=Grey ctermbg=NONE cterm=NONE + hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE + hi Question ctermfg=Blue ctermbg=NONE cterm=NONE + hi QuickFixLine ctermfg=White ctermbg=Magenta cterm=bold + hi Removed ctermfg=Red ctermbg=NONE cterm=NONE + hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Search ctermfg=White ctermbg=DarkBlue cterm=NONE + hi SignColumn ctermfg=Black ctermbg=NONE cterm=NONE + hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE + hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline + hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline + hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline + hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline + hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi StatusLine ctermfg=White ctermbg=DarkGrey cterm=bold,reverse + hi StatusLineNC ctermfg=Grey ctermbg=DarkGrey cterm=reverse + hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE + hi String ctermfg=Green ctermbg=NONE cterm=NONE + hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE + hi TabLine ctermfg=Grey ctermbg=Black cterm=NONE + hi TabLineFill ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi TabLineSel ctermfg=White ctermbg=DarkGrey cterm=bold + hi Tag ctermfg=LightGrey ctermbg=NONE cterm=bold + hi Title ctermfg=Blue ctermbg=NONE cterm=bold + hi TitleBar ctermfg=White ctermbg=DarkGrey cterm=NONE + hi TitleBarNC ctermfg=Grey ctermbg=Black cterm=NONE + hi Todo ctermfg=Yellow ctermbg=NONE cterm=bold + hi ToolbarButton ctermfg=Yellow ctermbg=NONE cterm=NONE + hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE + hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE + hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline + hi VertSplit ctermfg=Grey ctermbg=NONE cterm=NONE + hi Visual ctermfg=Blue ctermbg=Black cterm=bold,reverse + hi VisualNOS ctermfg=NONE ctermbg=Black cterm=bold + hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=NONE ctermbg=Grey cterm=NONE + hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE + hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE + hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE + hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE + hi csvCol6 ctermfg=LightGrey ctermbg=NONE cterm=NONE + hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE + hi debugBreakpoint ctermfg=Grey ctermbg=Black cterm=NONE + hi debugPC ctermfg=NONE ctermbg=Black cterm=NONE + hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE + hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi diffLine ctermfg=Grey ctermbg=NONE cterm=NONE + hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE + hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE + hi lCursor ctermfg=Black ctermbg=Red cterm=NONE + hi markdownCode ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownCodeBlock ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE + hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE + hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi markdownH6 ctermfg=LightGrey ctermbg=NONE cterm=NONE + hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline + hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE + hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE + finish + endif + + if s:t_Co >= 0 + hi CursorLineFold term=underline + hi CursorLineSign term=underline + hi Float term=NONE + hi Ignore term=NONE + hi IncSearch term=bold,reverse,underline + hi Number term=NONE + hi SpecialKey term=bold + hi StatusLineTerm term=bold,reverse + hi StatusLineTermNC term=bold,underline + hi Terminal term=NONE + finish + endif + + finish +endif + +if &background == 'light' + hi Normal guifg=#4c4f69 guibg=#eff1f5 guisp=NONE gui=NONE ctermfg=236 ctermbg=231 cterm=NONE term=NONE + hi Added guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE + hi Bold guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold + hi Changed guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi Character guifg=#179299 guibg=NONE guisp=NONE gui=NONE ctermfg=30 ctermbg=NONE cterm=NONE term=NONE + hi ColorColumn guifg=NONE guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=NONE ctermbg=255 cterm=NONE term=reverse + hi Comment guifg=#7c7f93 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=bold + hi Conceal guifg=#8c8fa1 guibg=NONE guisp=NONE gui=NONE ctermfg=246 ctermbg=NONE cterm=NONE term=NONE + hi Conditional guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi Constant guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE + hi CurSearch guifg=#4c4f69 guibg=#fc8fc3 guisp=NONE gui=NONE ctermfg=236 ctermbg=211 cterm=NONE term=reverse + hi Cursor guifg=#eff1f5 guibg=#dc8a78 guisp=NONE gui=NONE ctermfg=231 ctermbg=174 cterm=NONE term=reverse + hi CursorColumn guifg=NONE guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=NONE ctermbg=255 cterm=NONE term=NONE + hi CursorIM guifg=#eff1f5 guibg=#8839ef guisp=NONE gui=NONE ctermfg=231 ctermbg=93 cterm=NONE term=NONE + hi CursorLine guifg=NONE guibg=#e9ebf1 guisp=NONE gui=NONE ctermfg=NONE ctermbg=253 cterm=NONE term=underline + hi CursorLineNr guifg=#7287fd guibg=NONE guisp=NONE gui=NONE ctermfg=69 ctermbg=NONE cterm=NONE term=bold + hi Delimiter guifg=#7c7f93 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE + hi DiffAdd guifg=NONE guibg=#d0e2d1 guisp=NONE gui=NONE ctermfg=NONE ctermbg=152 cterm=NONE term=reverse + hi DiffChange guifg=NONE guibg=#e0e7f5 guisp=NONE gui=NONE ctermfg=NONE ctermbg=254 cterm=NONE term=NONE + hi DiffDelete guifg=NONE guibg=#eac8d3 guisp=NONE gui=NONE ctermfg=NONE ctermbg=224 cterm=NONE term=reverse + hi DiffText guifg=NONE guibg=#b0c7f5 guisp=NONE gui=NONE ctermfg=NONE ctermbg=153 cterm=NONE term=reverse + hi Directory guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi EndOfBuffer guifg=#bcc0cc guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE term=NONE + hi Error guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=bold,reverse + hi ErrorMsg guifg=#d20f39 guibg=NONE guisp=NONE gui=bold ctermfg=161 ctermbg=NONE cterm=bold term=bold,reverse + hi Exception guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi FoldColumn guifg=#9ca0b0 guibg=NONE guisp=NONE gui=NONE ctermfg=247 ctermbg=NONE cterm=NONE term=NONE + hi Folded guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi Function guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi Identifier guifg=#dd7878 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE term=NONE + hi Include guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi Italic guifg=NONE guibg=NONE guisp=NONE gui=italic ctermfg=NONE ctermbg=NONE cterm=italic term=italic + hi Keyword guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi Label guifg=#209fb5 guibg=NONE guisp=NONE gui=NONE ctermfg=38 ctermbg=NONE cterm=NONE term=NONE + hi LineNr guifg=#bcc0cc guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE term=NONE + hi Macro guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi MatchParen guifg=#fe640b guibg=NONE guisp=NONE gui=bold ctermfg=202 ctermbg=NONE cterm=bold term=bold,underline + hi ModeMsg guifg=#4c4f69 guibg=NONE guisp=NONE gui=bold ctermfg=236 ctermbg=NONE cterm=bold term=bold + hi MoreMsg guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi NonText guifg=#9ca0b0 guibg=NONE guisp=NONE gui=NONE ctermfg=247 ctermbg=NONE cterm=NONE term=NONE + hi Operator guifg=#04a5e5 guibg=NONE guisp=NONE gui=NONE ctermfg=39 ctermbg=NONE cterm=NONE term=NONE + hi Pmenu guifg=#7c7f93 guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=103 ctermbg=255 cterm=NONE term=reverse + hi PmenuExtra guifg=#9ca0b0 guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=247 ctermbg=255 cterm=NONE term=NONE + hi PmenuExtraSel guifg=#9ca0b0 guibg=#ccd0da guisp=NONE gui=bold ctermfg=247 ctermbg=253 cterm=bold term=bold + hi PmenuMatch guifg=#4c4f69 guibg=NONE guisp=NONE gui=bold ctermfg=236 ctermbg=NONE cterm=bold term=bold + hi PmenuMatchSel guifg=NONE guibg=NONE guisp=NONE gui=bold ctermfg=NONE ctermbg=NONE cterm=bold term=bold + hi PmenuSbar guifg=NONE guibg=#ccd0da guisp=NONE gui=NONE ctermfg=NONE ctermbg=253 cterm=NONE term=reverse + hi PmenuSel guifg=NONE guibg=#ccd0da guisp=NONE gui=bold ctermfg=NONE ctermbg=253 cterm=bold term=bold + hi PmenuThumb guifg=NONE guibg=#9ca0b0 guisp=NONE gui=NONE ctermfg=NONE ctermbg=247 cterm=NONE term=NONE + hi PreInsert guifg=#7c7f93 guibg=NONE guisp=NONE gui=NONE ctermfg=103 ctermbg=NONE cterm=NONE term=NONE + hi PreProc guifg=#ea76cb guibg=NONE guisp=NONE gui=NONE ctermfg=206 ctermbg=NONE cterm=NONE term=NONE + hi Question guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=standout + hi QuickFixLine guifg=NONE guibg=#d0baf3 guisp=NONE gui=bold ctermfg=236 ctermbg=183 cterm=bold term=NONE + hi Removed guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE + hi Repeat guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi Search guifg=#4c4f69 guibg=#a8daf0 guisp=NONE gui=NONE ctermfg=236 ctermbg=117 cterm=NONE term=reverse + hi SignColumn guifg=#bcc0cc guibg=NONE guisp=NONE gui=NONE ctermfg=250 ctermbg=NONE cterm=NONE term=reverse + hi Special guifg=#ea76cb guibg=NONE guisp=NONE gui=NONE ctermfg=206 ctermbg=NONE cterm=NONE term=NONE + hi SpellBad guifg=NONE guibg=NONE guisp=#d20f39 gui=undercurl ctermfg=161 ctermbg=NONE cterm=underline term=underline + hi SpellCap guifg=NONE guibg=NONE guisp=#df8e1d gui=undercurl ctermfg=172 ctermbg=NONE cterm=underline term=underline + hi SpellLocal guifg=NONE guibg=NONE guisp=#1e66f5 gui=undercurl ctermfg=27 ctermbg=NONE cterm=underline term=underline + hi SpellRare guifg=NONE guibg=NONE guisp=#40a02b gui=undercurl ctermfg=34 ctermbg=NONE cterm=underline term=underline + hi Statement guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi StatusLine guifg=#4c4f69 guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=236 ctermbg=254 cterm=NONE term=bold,reverse + hi StatusLineNC guifg=#bcc0cc guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=250 ctermbg=255 cterm=NONE term=bold,underline + hi StorageClass guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE + hi String guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE + hi Structure guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE + hi TabLine guifg=#9ca0b0 guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=247 ctermbg=254 cterm=NONE term=bold,underline + hi TabLineFill guifg=NONE guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=NONE ctermbg=255 cterm=NONE term=NONE + hi TabLineSel guifg=#4c4f69 guibg=#eff1f5 guisp=NONE gui=NONE ctermfg=236 ctermbg=231 cterm=NONE term=bold,reverse + hi Tag guifg=#7287fd guibg=NONE guisp=NONE gui=bold ctermfg=69 ctermbg=NONE cterm=bold term=bold + hi Title guifg=#1e66f5 guibg=NONE guisp=NONE gui=bold ctermfg=27 ctermbg=NONE cterm=bold term=NONE + hi TitleBar guifg=#4c4f69 guibg=#e6e9ef guisp=NONE gui=NONE ctermfg=236 ctermbg=255 cterm=NONE term=NONE + hi TitleBarNC guifg=#9ca0b0 guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=247 ctermbg=254 cterm=NONE term=NONE + hi Todo guifg=#dd7878 guibg=NONE guisp=NONE gui=bold ctermfg=167 ctermbg=NONE cterm=bold term=bold,reverse + hi ToolbarButton guifg=#dc8a78 guibg=NONE guisp=NONE gui=NONE ctermfg=174 ctermbg=NONE cterm=NONE term=bold,reverse + hi ToolbarLine guifg=NONE guibg=NONE guisp=NONE gui=NONE ctermfg=NONE ctermbg=NONE cterm=NONE term=reverse + hi Type guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE + hi Underlined guifg=NONE guibg=NONE guisp=NONE gui=underline ctermfg=NONE ctermbg=NONE cterm=underline term=underline + hi VertSplit guifg=#dce0e8 guibg=NONE guisp=NONE gui=NONE ctermfg=254 ctermbg=NONE cterm=NONE term=NONE + hi Visual guifg=NONE guibg=#bcc0cc guisp=NONE gui=NONE ctermfg=250 ctermbg=236 cterm=reverse term=reverse + hi VisualNOS guifg=NONE guibg=#bcc0cc guisp=NONE gui=bold ctermfg=NONE ctermbg=250 cterm=bold term=NONE + hi WarningMsg guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=standout + hi WildMenu guifg=NONE guibg=#9ca0b0 guisp=NONE gui=NONE ctermfg=NONE ctermbg=247 cterm=NONE term=bold + hi csvCol0 guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE + hi csvCol1 guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE + hi csvCol2 guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE + hi csvCol3 guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE + hi csvCol4 guifg=#04a5e5 guibg=NONE guisp=NONE gui=NONE ctermfg=39 ctermbg=NONE cterm=NONE term=NONE + hi csvCol5 guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi csvCol6 guifg=#7287fd guibg=NONE guisp=NONE gui=NONE ctermfg=69 ctermbg=NONE cterm=NONE term=NONE + hi csvCol7 guifg=#8839ef guibg=NONE guisp=NONE gui=NONE ctermfg=93 ctermbg=NONE cterm=NONE term=NONE + hi csvCol8 guifg=#ea76cb guibg=NONE guisp=NONE gui=NONE ctermfg=206 ctermbg=NONE cterm=NONE term=NONE + hi debugBreakpoint guifg=#9ca0b0 guibg=#eff1f5 guisp=NONE gui=NONE ctermfg=247 ctermbg=231 cterm=NONE term=NONE + hi debugPC guifg=NONE guibg=#dce0e8 guisp=NONE gui=NONE ctermfg=NONE ctermbg=254 cterm=NONE term=NONE + hi diffAdded guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE + hi diffChanged guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi diffFile guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi diffIndexLine guifg=#179299 guibg=NONE guisp=NONE gui=NONE ctermfg=30 ctermbg=NONE cterm=NONE term=NONE + hi diffLine guifg=#9ca0b0 guibg=NONE guisp=NONE gui=NONE ctermfg=247 ctermbg=NONE cterm=NONE term=NONE + hi diffNewFile guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE + hi diffOldFile guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE + hi diffRemoved guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE + hi lCursor guifg=#eff1f5 guibg=#d20f39 guisp=NONE gui=NONE ctermfg=231 ctermbg=161 cterm=NONE term=NONE + hi markdownCode guifg=#dd7878 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE term=NONE + hi markdownCodeBlock guifg=#dd7878 guibg=NONE guisp=NONE gui=NONE ctermfg=167 ctermbg=NONE cterm=NONE term=NONE + hi markdownH1 guifg=#d20f39 guibg=NONE guisp=NONE gui=NONE ctermfg=161 ctermbg=NONE cterm=NONE term=NONE + hi markdownH2 guifg=#fe640b guibg=NONE guisp=NONE gui=NONE ctermfg=202 ctermbg=NONE cterm=NONE term=NONE + hi markdownH3 guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE + hi markdownH4 guifg=#40a02b guibg=NONE guisp=NONE gui=NONE ctermfg=34 ctermbg=NONE cterm=NONE term=NONE + hi markdownH5 guifg=#209fb5 guibg=NONE guisp=NONE gui=NONE ctermfg=38 ctermbg=NONE cterm=NONE term=NONE + hi markdownH6 guifg=#7287fd guibg=NONE guisp=NONE gui=NONE ctermfg=69 ctermbg=NONE cterm=NONE term=NONE + hi markdownHeadingDelimiter guifg=#fe640b guibg=NONE guisp=NONE gui=bold ctermfg=202 ctermbg=NONE cterm=bold term=bold + hi markdownLinkText guifg=#1e66f5 guibg=NONE guisp=NONE gui=underline ctermfg=27 ctermbg=NONE cterm=underline term=underline + hi qfFileName guifg=#1e66f5 guibg=NONE guisp=NONE gui=NONE ctermfg=27 ctermbg=NONE cterm=NONE term=NONE + hi qfLineNr guifg=#df8e1d guibg=NONE guisp=NONE gui=NONE ctermfg=172 ctermbg=NONE cterm=NONE term=NONE + + if s:tgc || s:t_Co >= 256 + if s:tgc + hi QuickFixLine cterm=NONE + hi Visual cterm=NONE + endif + finish + endif + + if s:t_Co >= 16 + hi Normal ctermfg=Black ctermbg=White cterm=NONE + hi Added ctermfg=Green ctermbg=NONE cterm=NONE + hi Bold ctermfg=NONE ctermbg=NONE cterm=bold + hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE + hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi ColorColumn ctermfg=NONE ctermbg=Grey cterm=NONE + hi Comment ctermfg=Black ctermbg=NONE cterm=NONE + hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE + hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi CurSearch ctermfg=Black ctermbg=Red cterm=NONE + hi Cursor ctermfg=White ctermbg=Red cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=Grey cterm=NONE + hi CursorIM ctermfg=White ctermbg=DarkMagenta cterm=NONE + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi CursorLineNr ctermfg=Black ctermbg=NONE cterm=NONE + hi Delimiter ctermfg=Black ctermbg=NONE cterm=NONE + hi DiffAdd ctermfg=White ctermbg=Green cterm=NONE + hi DiffChange ctermfg=White ctermbg=Yellow cterm=NONE + hi DiffDelete ctermfg=White ctermbg=Red cterm=NONE + hi DiffText ctermfg=White ctermbg=Cyan cterm=NONE + hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE + hi EndOfBuffer ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Error ctermfg=Red ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold + hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi FoldColumn ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE + hi Function ctermfg=Blue ctermbg=NONE cterm=NONE + hi Identifier ctermfg=DarkRed ctermbg=NONE cterm=NONE + hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Italic ctermfg=NONE ctermbg=NONE cterm=italic + hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi LineNr ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi ModeMsg ctermfg=Black ctermbg=NONE cterm=bold + hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE + hi NonText ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE + hi Pmenu ctermfg=Black ctermbg=Grey cterm=NONE + hi PmenuExtra ctermfg=DarkGrey ctermbg=Grey cterm=NONE + hi PmenuExtraSel ctermfg=DarkGrey ctermbg=Grey cterm=bold + hi PmenuMatch ctermfg=Black ctermbg=NONE cterm=bold + hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold + hi PmenuSbar ctermfg=NONE ctermbg=Grey cterm=NONE + hi PmenuSel ctermfg=NONE ctermbg=Grey cterm=bold + hi PmenuThumb ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi PreInsert ctermfg=Black ctermbg=NONE cterm=NONE + hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE + hi Question ctermfg=Blue ctermbg=NONE cterm=NONE + hi QuickFixLine ctermfg=White ctermbg=Magenta cterm=bold + hi Removed ctermfg=Red ctermbg=NONE cterm=NONE + hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Search ctermfg=Black ctermbg=Cyan cterm=NONE + hi SignColumn ctermfg=White ctermbg=NONE cterm=NONE + hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE + hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline + hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline + hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline + hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline + hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi StatusLine ctermfg=Black ctermbg=Grey cterm=bold,reverse + hi StatusLineNC ctermfg=DarkGrey ctermbg=Grey cterm=NONE + hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE + hi String ctermfg=Green ctermbg=NONE cterm=NONE + hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE + hi TabLine ctermfg=DarkGrey ctermbg=Grey cterm=NONE + hi TabLineFill ctermfg=NONE ctermbg=Grey cterm=NONE + hi TabLineSel ctermfg=Black ctermbg=White cterm=NONE + hi Tag ctermfg=DarkBlue ctermbg=NONE cterm=bold + hi Title ctermfg=Blue ctermbg=NONE cterm=bold + hi TitleBar ctermfg=Black ctermbg=Grey cterm=NONE + hi TitleBarNC ctermfg=DarkGrey ctermbg=Grey cterm=NONE + hi Todo ctermfg=DarkRed ctermbg=NONE cterm=bold + hi ToolbarButton ctermfg=Red ctermbg=NONE cterm=NONE + hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE + hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE + hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline + hi VertSplit ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Visual ctermfg=Blue ctermbg=White cterm=bold,reverse + hi VisualNOS ctermfg=NONE ctermbg=White cterm=bold + hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE + hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE + hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE + hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE + hi csvCol6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE + hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE + hi debugBreakpoint ctermfg=DarkGrey ctermbg=White cterm=NONE + hi debugPC ctermfg=NONE ctermbg=Grey cterm=NONE + hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE + hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi diffLine ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE + hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE + hi lCursor ctermfg=White ctermbg=Red cterm=NONE + hi markdownCode ctermfg=DarkRed ctermbg=NONE cterm=NONE + hi markdownCodeBlock ctermfg=DarkRed ctermbg=NONE cterm=NONE + hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE + hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE + hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi markdownH6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE + hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline + hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE + hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE + finish + endif + + if s:t_Co >= 8 + hi Normal ctermfg=Black ctermbg=White cterm=NONE + hi Added ctermfg=Green ctermbg=NONE cterm=NONE + hi Bold ctermfg=NONE ctermbg=NONE cterm=bold + hi Changed ctermfg=Blue ctermbg=NONE cterm=NONE + hi Character ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi ColorColumn ctermfg=White ctermbg=DarkGrey cterm=NONE + hi Comment ctermfg=Black ctermbg=NONE cterm=NONE + hi Conceal ctermfg=Grey ctermbg=NONE cterm=NONE + hi Conditional ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Constant ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi CurSearch ctermfg=Black ctermbg=Red cterm=NONE + hi Cursor ctermfg=White ctermbg=Red cterm=NONE + hi CursorColumn ctermfg=NONE ctermbg=Grey cterm=NONE + hi CursorIM ctermfg=White ctermbg=DarkMagenta cterm=NONE + hi CursorLine ctermfg=NONE ctermbg=NONE cterm=underline + hi CursorLineNr ctermfg=Black ctermbg=NONE cterm=NONE + hi Delimiter ctermfg=Black ctermbg=NONE cterm=NONE + hi DiffAdd ctermfg=White ctermbg=Green cterm=NONE + hi DiffChange ctermfg=White ctermbg=Yellow cterm=NONE + hi DiffDelete ctermfg=White ctermbg=Red cterm=NONE + hi DiffText ctermfg=White ctermbg=Cyan cterm=NONE + hi Directory ctermfg=Blue ctermbg=NONE cterm=NONE + hi EndOfBuffer ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Error ctermfg=Red ctermbg=NONE cterm=NONE + hi ErrorMsg ctermfg=Red ctermbg=NONE cterm=bold + hi Exception ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi FoldColumn ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Folded ctermfg=Blue ctermbg=NONE cterm=NONE + hi Function ctermfg=Blue ctermbg=NONE cterm=NONE + hi Identifier ctermfg=DarkRed ctermbg=NONE cterm=NONE + hi Include ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Italic ctermfg=NONE ctermbg=NONE cterm=italic + hi Keyword ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Label ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi LineNr ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Macro ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi MatchParen ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi ModeMsg ctermfg=Black ctermbg=NONE cterm=bold + hi MoreMsg ctermfg=Blue ctermbg=NONE cterm=NONE + hi NonText ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Operator ctermfg=Cyan ctermbg=NONE cterm=NONE + hi Pmenu ctermfg=Black ctermbg=Grey cterm=NONE + hi PmenuExtra ctermfg=DarkGrey ctermbg=Grey cterm=NONE + hi PmenuExtraSel ctermfg=DarkGrey ctermbg=Grey cterm=bold + hi PmenuMatch ctermfg=Black ctermbg=NONE cterm=bold + hi PmenuMatchSel ctermfg=NONE ctermbg=NONE cterm=bold + hi PmenuSbar ctermfg=NONE ctermbg=Grey cterm=NONE + hi PmenuSel ctermfg=NONE ctermbg=Grey cterm=bold + hi PmenuThumb ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi PreInsert ctermfg=Black ctermbg=NONE cterm=NONE + hi PreProc ctermfg=Magenta ctermbg=NONE cterm=NONE + hi Question ctermfg=Blue ctermbg=NONE cterm=NONE + hi QuickFixLine ctermfg=Black ctermbg=Magenta cterm=bold + hi Removed ctermfg=Red ctermbg=NONE cterm=NONE + hi Repeat ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi Search ctermfg=Black ctermbg=Cyan cterm=NONE + hi SignColumn ctermfg=White ctermbg=NONE cterm=NONE + hi Special ctermfg=Magenta ctermbg=NONE cterm=NONE + hi SpellBad ctermfg=Red ctermbg=NONE cterm=underline + hi SpellCap ctermfg=Yellow ctermbg=NONE cterm=underline + hi SpellLocal ctermfg=Blue ctermbg=NONE cterm=underline + hi SpellRare ctermfg=Green ctermbg=NONE cterm=underline + hi Statement ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi StatusLine ctermfg=Black ctermbg=Grey cterm=bold,reverse + hi StatusLineNC ctermfg=DarkGrey ctermbg=Grey cterm=reverse + hi StorageClass ctermfg=Yellow ctermbg=NONE cterm=NONE + hi String ctermfg=Green ctermbg=NONE cterm=NONE + hi Structure ctermfg=Yellow ctermbg=NONE cterm=NONE + hi TabLine ctermfg=DarkGrey ctermbg=Grey cterm=NONE + hi TabLineFill ctermfg=NONE ctermbg=Grey cterm=NONE + hi TabLineSel ctermfg=Black ctermbg=Grey cterm=bold + hi Tag ctermfg=DarkBlue ctermbg=NONE cterm=bold + hi Title ctermfg=Blue ctermbg=NONE cterm=bold + hi TitleBar ctermfg=Black ctermbg=Grey cterm=NONE + hi TitleBarNC ctermfg=DarkGrey ctermbg=Grey cterm=NONE + hi Todo ctermfg=DarkRed ctermbg=NONE cterm=bold + hi ToolbarButton ctermfg=Red ctermbg=NONE cterm=NONE + hi ToolbarLine ctermfg=NONE ctermbg=NONE cterm=NONE + hi Type ctermfg=Yellow ctermbg=NONE cterm=NONE + hi Underlined ctermfg=NONE ctermbg=NONE cterm=underline + hi VertSplit ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi Visual ctermfg=Blue ctermbg=White cterm=bold,reverse + hi VisualNOS ctermfg=NONE ctermbg=White cterm=bold + hi WarningMsg ctermfg=Yellow ctermbg=NONE cterm=NONE + hi WildMenu ctermfg=NONE ctermbg=DarkGrey cterm=NONE + hi csvCol0 ctermfg=Red ctermbg=NONE cterm=NONE + hi csvCol1 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi csvCol2 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi csvCol3 ctermfg=Green ctermbg=NONE cterm=NONE + hi csvCol4 ctermfg=Cyan ctermbg=NONE cterm=NONE + hi csvCol5 ctermfg=Blue ctermbg=NONE cterm=NONE + hi csvCol6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE + hi csvCol7 ctermfg=DarkMagenta ctermbg=NONE cterm=NONE + hi csvCol8 ctermfg=Magenta ctermbg=NONE cterm=NONE + hi debugBreakpoint ctermfg=DarkGrey ctermbg=White cterm=NONE + hi debugPC ctermfg=NONE ctermbg=Grey cterm=NONE + hi diffAdded ctermfg=Green ctermbg=NONE cterm=NONE + hi diffChanged ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffFile ctermfg=Blue ctermbg=NONE cterm=NONE + hi diffIndexLine ctermfg=DarkGreen ctermbg=NONE cterm=NONE + hi diffLine ctermfg=DarkGrey ctermbg=NONE cterm=NONE + hi diffNewFile ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi diffOldFile ctermfg=Yellow ctermbg=NONE cterm=NONE + hi diffRemoved ctermfg=Red ctermbg=NONE cterm=NONE + hi lCursor ctermfg=White ctermbg=Red cterm=NONE + hi markdownCode ctermfg=DarkRed ctermbg=NONE cterm=NONE + hi markdownCodeBlock ctermfg=DarkRed ctermbg=NONE cterm=NONE + hi markdownH1 ctermfg=Red ctermbg=NONE cterm=NONE + hi markdownH2 ctermfg=DarkYellow ctermbg=NONE cterm=NONE + hi markdownH3 ctermfg=Yellow ctermbg=NONE cterm=NONE + hi markdownH4 ctermfg=Green ctermbg=NONE cterm=NONE + hi markdownH5 ctermfg=DarkCyan ctermbg=NONE cterm=NONE + hi markdownH6 ctermfg=DarkBlue ctermbg=NONE cterm=NONE + hi markdownHeadingDelimiter ctermfg=DarkYellow ctermbg=NONE cterm=bold + hi markdownLinkText ctermfg=Blue ctermbg=NONE cterm=underline + hi qfFileName ctermfg=Blue ctermbg=NONE cterm=NONE + hi qfLineNr ctermfg=Yellow ctermbg=NONE cterm=NONE + finish + endif + + if s:t_Co >= 0 + hi CursorLineFold term=underline + hi CursorLineSign term=underline + hi Float term=NONE + hi Ignore term=NONE + hi IncSearch term=bold,reverse,underline + hi Number term=NONE + hi SpecialKey term=bold + hi StatusLineTerm term=bold,reverse + hi StatusLineTermNC term=bold,underline + hi Terminal term=NONE + finish + endif + +endif + +" vim: et ts=8 sw=2 sts=2 diff --git a/runtime/compiler/biome.vim b/runtime/compiler/biome.vim new file mode 100644 index 00000000..57a80d4b --- /dev/null +++ b/runtime/compiler/biome.vim @@ -0,0 +1,23 @@ +" Vim compiler file +" Compiler: Biome (= linter for JavaScript, TypeScript, JSX, TSX, JSON, +" JSONC, HTML, Vue, Svelte, Astro, CSS, GraphQL and GritQL files) +" Maintainer: @Konfekt +" Last Change: 2025 Nov 12 +if exists("current_compiler") | finish | endif +let current_compiler = "biome" + +let s:cpo_save = &cpo +set cpo&vim + +exe 'CompilerSet makeprg=' .. escape('biome check --linter-enabled=true --formatter-enabled=false --assist-enabled=false --reporter=github ' + \ .. get(b:, 'biome_makeprg_params', get(g:, 'biome_makeprg_params', '')), ' \|"') + +CompilerSet errorformat=::%trror%.%#file=%f\\,line=%l\\,%.%#col=%c\\,%.%#::%m +CompilerSet errorformat+=::%tarning%.%#file=%f\\,line=%l\\,%.%#col=%c\\,%.%#::%m +CompilerSet errorformat+=::%totice%.%#file=%f\\,line=%l\\,%.%#col=%c\\,%.%#::%m +CompilerSet errorformat+=%-G\\s%# +CompilerSet errorformat+=%-Gcheck\ %.%# +CompilerSet errorformat+=%-G%.%#Some\ errors\ were\ emitted\ while\ running\ checks%. + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/cabal.vim b/runtime/compiler/cabal.vim new file mode 100644 index 00000000..02d4d9b8 --- /dev/null +++ b/runtime/compiler/cabal.vim @@ -0,0 +1,39 @@ +" Vim compiler file +" Compiler: Haskell Cabal Build file +" Maintainer: Mateo Gjika <@mateoxh> + +if exists('current_compiler') + finish +endif + +let current_compiler = 'cabal' + +let s:save_cpo = &cpo +set cpo&vim + +CompilerSet makeprg=cabal\ build + +CompilerSet errorformat= + \%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:\ [%.%#], + \%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:%m, + \%W%f:(%l\\,%c)-(%e\\,%k):\ %tarning:, + \%W%f:%l:%c-%k:\ %tarning:\ [%.%#], + \%W%f:%l:%c-%k:\ %tarning:%m, + \%W%f:%l:%c-%k:\ %tarning:, + \%W%f:%l:%c:\ %tarning:\ [%.%#], + \%W%f:%l:%c:\ %tarning:%m, + \%W%f:%l:%c:\ %tarning:, + \%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:\ [%.%#], + \%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:%m, + \%E%f:(%l\\,%c)-(%e\\,%k):\ %trror:, + \%E%f:%l:%c-%k:\ %trror:\ [%.%#], + \%E%f:%l:%c-%k:\ %trror:%m, + \%E%f:%l:%c-%k:\ %trror:, + \%E%f:%l:%c:\ %trror:\ [%.%#], + \%E%f:%l:%c:\ %trror:%m, + \%E%f:%l:%c:\ %trror:, + \%Z\ %\\+\|%.%#, + \%C%m + +let &cpo = s:save_cpo +unlet s:save_cpo diff --git a/runtime/compiler/context.vim b/runtime/compiler/context.vim index c3780d46..82106ad7 100644 --- a/runtime/compiler/context.vim +++ b/runtime/compiler/context.vim @@ -4,9 +4,7 @@ vim9script # Maintainer: Nicola Vitacolonna # Former Maintainers: Nikolai Weibull # Contributors: Enno Nagel -# Last Change: 2024 Mar 29 -# 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) -# 2025 Mar 11 by The Vim Project (add comment for Dispatch) +# Last Change: 2026 Jan 10 if exists("g:current_compiler") finish @@ -16,7 +14,6 @@ import autoload '../autoload/context.vim' g:current_compiler = 'context' -# CompilerSet makeprg=context if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) || (!filereadable('Makefile') && !filereadable('makefile')) var makeprg = join(context.ConTeXtCmd(shellescape(expand('%:p:t'))), ' ') @@ -30,14 +27,14 @@ const context_errorformat = join([ "%-Qclose source%.%#> %f", "%-Popen source%.%#name '%f'", "%-Qclose source%.%#name '%f'", - "tex %trror%.%#error on line %l in file %f: %m", + "%E! %m", + "%Ztex %trror%.%#error on line %l in file %f", "%Elua %trror%.%#error on line %l in file %f:", "%+Emetapost %#> error: %#", "%Emetafun%.%#error: %m", - "! error: %#%m", "%-C %#", "%C! %m", - "%Z[ctxlua]%m", + "%Z%.%#[ctxlua]:%l:%m", "%+C<*> %.%#", "%-C%.%#", "%Z...%m", diff --git a/runtime/compiler/cppcheck.vim b/runtime/compiler/cppcheck.vim index 033613c0..17f79f4f 100644 --- a/runtime/compiler/cppcheck.vim +++ b/runtime/compiler/cppcheck.vim @@ -1,7 +1,7 @@ " vim compiler file " Compiler: cppcheck (C++ static checker) " Maintainer: Vincent B. (twinside@free.fr) -" Last Change: 2024 Nov 19 by @Konfekt +" Last Change: 2025 Nov 06 by @Konfekt if exists("current_compiler") | finish | endif let current_compiler = "cppcheck" @@ -18,14 +18,14 @@ if !exists('g:c_cppcheck_params') let s:undo_compiler = 'unlet! g:c_cppcheck_params' endif -let &l:makeprg = 'cppcheck --quiet' +exe 'CompilerSet makeprg=' .. escape('cppcheck --quiet' \ ..' --template="{file}:{line}:{column}: {severity}: [{id}] {message} {callstack}"' \ ..' '..get(b:, 'c_cppcheck_params', get(g:, 'c_cppcheck_params', (&filetype ==# 'cpp' ? ' --language=c++' : ''))) \ ..' '..get(b:, 'c_cppcheck_includes', get(g:, 'c_cppcheck_includes', \ (filereadable('compile_commands.json') ? '--project=compile_commands.json' : \ (!empty(glob('*'..s:slash..'compile_commands.json', 1, 1)) ? '--project='..glob('*'..s:slash..'compile_commands.json', 1, 1)[0] : - \ (empty(&path) ? '' : '-I')..join(map(filter(split(&path, ','), 'isdirectory(v:val)'),'shellescape(v:val)'), ' -I'))))) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') + \ (empty(&path) ? '' : '-I')..join(map(filter(split(&path, ','), 'isdirectory(v:val)'),'shellescape(v:val)'), ' -I'))))), + \ ' \|"') CompilerSet errorformat= \%f:%l:%c:\ %tarning:\ %m, diff --git a/runtime/compiler/eruby.vim b/runtime/compiler/eruby.vim index 815d082f..2f9f9aa7 100644 --- a/runtime/compiler/eruby.vim +++ b/runtime/compiler/eruby.vim @@ -2,7 +2,6 @@ " Language: eRuby " Maintainer: Doug Kearns " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2024 Apr 03 if exists("current_compiler") diff --git a/runtime/compiler/gcc.vim b/runtime/compiler/gcc.vim index 7b6ebb98..1d5900eb 100644 --- a/runtime/compiler/gcc.vim +++ b/runtime/compiler/gcc.vim @@ -6,6 +6,7 @@ " by Daniel Hahler, 2019 Jul 12 " added line suggested by Anton Lindqvist 2016 Mar 31 " 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) +" 2025 Dec 17 by The Vim Project (correctly parse: 'make: *** [Makefile:2: all] Error 1') if exists("current_compiler") finish @@ -16,6 +17,7 @@ let s:cpo_save = &cpo set cpo&vim CompilerSet errorformat= + \make:\ ***\ [%f:%l:\ %m, \%*[^\"]\"%f\"%*\\D%l:%c:\ %m, \%*[^\"]\"%f\"%*\\D%l:\ %m, \\"%f\"%*\\D%l:%c:\ %m, diff --git a/runtime/compiler/gnat.vim b/runtime/compiler/gnat.vim index 086edbed..696d1c6e 100644 --- a/runtime/compiler/gnat.vim +++ b/runtime/compiler/gnat.vim @@ -3,7 +3,7 @@ " Language: Ada (GNAT) " $Id: gnat.vim 887 2008-07-08 14:29:01Z krischik $ " Copyright: Copyright (C) 2006 Martin Krischik -" Maintainer: Martin Krischi k +" Maintainer: Martin Krischi " Ned Okie " $Author: krischik $ " $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ diff --git a/runtime/compiler/hare.vim b/runtime/compiler/hare.vim index 88f36a9e..2b7d9345 100644 --- a/runtime/compiler/hare.vim +++ b/runtime/compiler/hare.vim @@ -3,25 +3,30 @@ vim9script # Vim compiler file. # Compiler: Hare # Maintainer: Amelia Clarke -# Last Change: 2025 Sep 06 +# Last Change: 2026 Jan 24 # Upstream: https://git.sr.ht/~sircmpwn/hare.vim if exists('g:current_compiler') finish endif +g:current_compiler = 'hare' if filereadable('Makefile') || filereadable('makefile') CompilerSet makeprg=make else - const makeprg = 'hare build ' - .. get(b:, 'hare_makeprg_params', get(g:, 'hare_makeprg_params', '-q')) + const makeprg = 'hare build ' .. get(g:, 'hare_makeprg_params', '-q') execute 'CompilerSet makeprg=' .. escape(makeprg, ' "\|') endif CompilerSet errorformat= - \%o:%l:%v:\ syntax\ error:\ %m, - \%o:%l:%v:\ error:\ %m, - \Error:\ %m, + \%E%o:%l:%v:\ error:\ %m, + \%E%o:%l:%v:\ syntax\ error:\ %m, + \%E%o:%l:%v:\ %\\%%(unexpected\ name\ %\\)%\\@=%m, + \%C,%C\ %.%#,%C%l\ %.%#, + \%trror:\ %o:\ %\\%%(%\\h%\\w%\\+%\\%%(::%\\h%\\w%\\+%\\)%#:\ %\\)%\\@=%m, + \%trror:\ %m, + \%+EAbort:\ %m%>, + \%C%.%#, \%-G%.%# augroup HareQuickFix @@ -30,6 +35,4 @@ augroup HareQuickFix autocmd QuickFixCmdPost lmake hare#QuickFixPaths() augroup END -g:current_compiler = 'hare' - # vim: et sts=2 sw=2 ts=8 tw=80 diff --git a/runtime/compiler/maven.vim b/runtime/compiler/maven.vim index 72e74e30..1657da75 100644 --- a/runtime/compiler/maven.vim +++ b/runtime/compiler/maven.vim @@ -7,24 +7,54 @@ " Original Source: https://github.com/mikelue/vim-maven-plugin/blob/master/compiler/maven.vim " (distributed under same terms as LICENSE per " https://github.com/mikelue/vim-maven-plugin/issues/13) -" Last Change: 2024 Nov 12 +" Last Change: 2025 Nov 18 if exists("current_compiler") finish endif let current_compiler = "maven" +" CompilerSet makeprg=mvn execute $'CompilerSet makeprg=mvn\ --batch-mode\ {escape(get(b:, 'maven_makeprg_params', get(g:, 'maven_makeprg_params', '')), ' \|"')}' " Error message for POM CompilerSet errorformat=[FATAL]\ Non-parseable\ POM\ %f:\ %m%\\s%\\+@%.%#line\ %l\\,\ column\ %c%.%#, CompilerSet errorformat+=[%tRROR]\ Malformed\ POM\ %f:\ %m%\\s%\\+@%.%#line\ %l\\,\ column\ %c%.%# +" Handle Non-parseable POM with '@:' embedded in the 'position:' clause. +CompilerSet errorformat+=[FATAL]\ Non-parseable\ POM\ %f:\ %m%\\s%\\+%.%#@%l:%c%.%#, +CompilerSet errorformat+=[%tRROR]\ Malformed\ POM\ %f:\ %m%\\s%\\+%.%#@%l:%c%.%#, -" Java related build messages +" JavaC messages with paths relative to module root: +" With column: CompilerSet errorformat+=[%tARNING]\ %f:[%l\\,%c]\ %m CompilerSet errorformat+=[%tRROR]\ %f:[%l\\,%c]\ %m CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:[%l\\,%c]\ %m,%Z CompilerSet errorformat+=%A%f:[%l\\,%c]\ %m,%Z +" Without column: +CompilerSet errorformat+=[%tARNING]\ %f:[%l]\ %m +CompilerSet errorformat+=[%tRROR]\ %f:[%l]\ %m +CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:[%l]\ %m,%Z +CompilerSet errorformat+=%A%f:[%l]\ %m,%Z + +" Plug-in messages with absolute paths: +" with column: +CompilerSet errorformat+=[%tARNING]\ %f:%l:%c:\ %m +CompilerSet errorformat+=[%tRROR]\ %f:%l:%c:\ %m +CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:%l:%c:\ %m,%Z +CompilerSet errorformat+=%A%f:%l:%c:\ %m,%Z +" without column: +CompilerSet errorformat+=[%tARNING]\ %f:%l:\ %m +CompilerSet errorformat+=[%tRROR]\ %f:%l:\ %m +CompilerSet errorformat+=%A[%t%[A-Z]%#]\ %f:%l:\ %m,%Z +CompilerSet errorformat+=%A%f:%l:\ %m,%Z + +" SpotBugs +CompilerSet errorformat+=[%tRROR]\ %m%\\s%\\+\[%*[^]]]%\\s%\\+In\ %f\ %.%#, +CompilerSet errorformat+=[%tARNING]\ %m%\\s%\\+\[%*[^]]]%\\s%\\+In\ %f\ %.%#, +CompilerSet errorformat+=[%tRROR]\ %.%#\ [aA]t\ %f:\[lines\ %l-%\\d\\+]\ %.%#, +CompilerSet errorformat+=[%tARNING]\ %.%#\ [aA]t\ %f:\[lines\ %l-%\\d\\+]\ %.%#, +CompilerSet errorformat+=[%tRROR]\ %.%#\ [aA]t\ %f:\[line\ %l]\ %.%#, +CompilerSet errorformat+=[%tARNING]\ %.%#\ [aA]t\ %f:\[line\ %l]\ %.%#, " jUnit related build messages CompilerSet errorformat+=%+E\ \ %#test%m,%Z @@ -36,5 +66,7 @@ CompilerSet errorformat+=%+Z%\\s%#at\ %f(%\\f%\\+:%l), CompilerSet errorformat+=%+C%.%# " Misc message removal +" CompilerSet errorformat+=%-GPicked\ up\ _JAVA_OPTIONS\ %.%#, +CompilerSet errorformat+=%-GAudit\ done., CompilerSet errorformat+=%-G[INFO]\ %.%#, CompilerSet errorformat+=%-G[debug]\ %.%# diff --git a/runtime/compiler/mypy.vim b/runtime/compiler/mypy.vim index 907b98b7..c7a575ce 100644 --- a/runtime/compiler/mypy.vim +++ b/runtime/compiler/mypy.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Mypy (Python static checker) " Maintainer: @Konfekt -" Last Change: 2024 Nov 19 +" Last Change: 2025 Nov 06 if exists("current_compiler") | finish | endif let current_compiler = "mypy" @@ -10,9 +10,9 @@ let s:cpo_save = &cpo set cpo&vim " CompilerSet makeprg=mypy -let &l:makeprg = 'mypy --show-column-numbers ' - \ ..get(b:, 'mypy_makeprg_params', get(g:, 'mypy_makeprg_params', '--strict --ignore-missing-imports')) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') +exe 'CompilerSet makeprg=' .. escape('mypy --show-column-numbers ' + \ ..get(b:, 'mypy_makeprg_params', get(g:, 'mypy_makeprg_params', '--strict --ignore-missing-imports')), + \ ' \|"') CompilerSet errorformat=%f:%l:%c:\ %t%*[^:]:\ %m let &cpo = s:cpo_save diff --git a/runtime/compiler/pandoc.vim b/runtime/compiler/pandoc.vim index 40d2d026..d1204192 100644 --- a/runtime/compiler/pandoc.vim +++ b/runtime/compiler/pandoc.vim @@ -2,7 +2,8 @@ " Compiler: Pandoc " Maintainer: Konfekt " Last Change: 2024 Nov 19 -" 2025 May 15 Update the title regex for CompilerSet #17321 +" 2025 May 15 by Vim Project: Update the title regex for CompilerSet #17321 +" 2026 Jan 10 by Vim Project: Do not set the title #19048 " " Expects output file extension, say `:make html` or `:make pdf`. " Passes additional arguments to pandoc, say `:make html --self-contained`. @@ -52,8 +53,6 @@ endfunction execute 'CompilerSet makeprg=pandoc'..escape( \ ' --standalone'.. - \ (s:PandocFiletype(&filetype) ==# 'markdown' && (getline(1) =~# '^%\s\+\S\+' || (search('^title:\s\+\S\+', 'cnw') > 0)) ? - \ '' : ' --metadata title=%:t:r:S').. \ ' '..s:PandocLang().. \ ' --from='..s:PandocFiletype(&filetype).. \ ' '..get(b:, 'pandoc_compiler_args', get(g:, 'pandoc_compiler_args', '')).. diff --git a/runtime/compiler/perl.vim b/runtime/compiler/perl.vim index 6aeaac3f..04643af2 100644 --- a/runtime/compiler/perl.vim +++ b/runtime/compiler/perl.vim @@ -1,6 +1,6 @@ " Vim compiler file " Compiler: Perl syntax checks (perl -Wc) -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Author: Christian J. Robinson " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues diff --git a/runtime/compiler/perlcritic.vim b/runtime/compiler/perlcritic.vim index 4b5f34dd..d50bc311 100644 --- a/runtime/compiler/perlcritic.vim +++ b/runtime/compiler/perlcritic.vim @@ -1,6 +1,6 @@ " Vim compiler file " Compiler: perlcritic -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Author: Doug Kearns " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues diff --git a/runtime/compiler/podchecker.vim b/runtime/compiler/podchecker.vim index 20faaa4b..744c1034 100644 --- a/runtime/compiler/podchecker.vim +++ b/runtime/compiler/podchecker.vim @@ -1,6 +1,6 @@ " Vim compiler file " Compiler: podchecker -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Author: Doug Kearns " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues diff --git a/runtime/compiler/pylint.vim b/runtime/compiler/pylint.vim index 96abf315..749fe7d1 100644 --- a/runtime/compiler/pylint.vim +++ b/runtime/compiler/pylint.vim @@ -3,6 +3,7 @@ " Maintainer: Daniel Moch " Last Change: 2024 Nov 07 by The Vim Project (added params variable) " 2024 Nov 19 by the Vim Project (properly escape makeprg setting) +" 2025 Nov 06 by the Vim Project (do not set buffer-local makeprg) if exists("current_compiler") | finish | endif let current_compiler = "pylint" @@ -11,10 +12,10 @@ let s:cpo_save = &cpo set cpo&vim " CompilerSet makeprg=ruff -let &l:makeprg = 'pylint ' . +exe 'CompilerSet makeprg=' .. escape('pylint ' . \ '--output-format=text --msg-template="{path}:{line}:{column}:{C}: [{symbol}] {msg}" --reports=no ' . - \ get(b:, "pylint_makeprg_params", get(g:, "pylint_makeprg_params", '--jobs=0')) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') + \ get(b:, "pylint_makeprg_params", get(g:, "pylint_makeprg_params", '--jobs=0')), + \ ' \|"') CompilerSet errorformat=%A%f:%l:%c:%t:\ %m,%A%f:%l:\ %m,%A%f:(%l):\ %m,%-Z%p^%.%#,%-G%.%# let &cpo = s:cpo_save diff --git a/runtime/compiler/pyright.vim b/runtime/compiler/pyright.vim new file mode 100644 index 00000000..eef6a9eb --- /dev/null +++ b/runtime/compiler/pyright.vim @@ -0,0 +1,25 @@ +" Vim compiler file +" Compiler: Pyright (Python Type Checker) +" Maintainer: @konfekt +" Last Change: 2025 Feb 7 + +if exists("current_compiler") | finish | endif +let current_compiler = "pyright" + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=pyright +" CompilerSet makeprg=basedpyright +exe 'CompilerSet makeprg=' .. escape( + \ get(b:, 'pyright_makeprg', get(g:, 'pyright_makeprg', 'pyright')), + \ ' \|"') +CompilerSet errorformat= + \%E%f:%l:%c\ -\ error:\ %m, + \%W%f:%l:%c\ -\ warning:\ %m, + \%N%f:%l:%c\ -\ note:\ %m, + \%C[\ \t]\ %.%#, + \%-G%.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/rake.vim b/runtime/compiler/rake.vim index 5b3c7f40..55f7373a 100644 --- a/runtime/compiler/rake.vim +++ b/runtime/compiler/rake.vim @@ -2,7 +2,6 @@ " Language: Rake " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2018 Mar 02 " 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) diff --git a/runtime/compiler/rime_deployer.vim b/runtime/compiler/rime_deployer.vim index e0c8daef..5331412d 100644 --- a/runtime/compiler/rime_deployer.vim +++ b/runtime/compiler/rime_deployer.vim @@ -3,6 +3,7 @@ " Maintainer: Wu, Zhenyu " URL: https://rime.im " Latest Revision: 2024-04-09 +" Last Change: 2025 Nov 16 by The Vim Project (set errorformat) if exists('b:current_compiler') finish @@ -25,6 +26,8 @@ for s:shared_data_dir in ['/sdcard/rime-data', '/run/current-system/sw/share/rim endfor execute 'CompilerSet makeprg=rime_deployer\ --build\ %:p:h:S\' s:shared_data_dir unlet s:prefix s:shared_data_dir +" CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m +CompilerSet errorformat& let &cpoptions = s:save_cpoptions unlet s:save_cpoptions diff --git a/runtime/compiler/rspec.vim b/runtime/compiler/rspec.vim index ee848f70..ab83acc8 100644 --- a/runtime/compiler/rspec.vim +++ b/runtime/compiler/rspec.vim @@ -2,7 +2,6 @@ " Language: RSpec " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2018 Aug 07 " 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) diff --git a/runtime/compiler/ruby.vim b/runtime/compiler/ruby.vim index 70dff5bf..2c34142f 100644 --- a/runtime/compiler/ruby.vim +++ b/runtime/compiler/ruby.vim @@ -3,7 +3,6 @@ " Function: Syntax check and/or error reporting " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2019 Jan 06 " 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) diff --git a/runtime/compiler/rubyunit.vim b/runtime/compiler/rubyunit.vim index e59873fa..2c6f5392 100644 --- a/runtime/compiler/rubyunit.vim +++ b/runtime/compiler/rubyunit.vim @@ -2,7 +2,6 @@ " Language: Test::Unit - Ruby Unit Testing Framework " Maintainer: Doug Kearns " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2014 Mar 23 " 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) diff --git a/runtime/compiler/ruff.vim b/runtime/compiler/ruff.vim index 318f4fe5..d4f564b0 100644 --- a/runtime/compiler/ruff.vim +++ b/runtime/compiler/ruff.vim @@ -3,6 +3,8 @@ " Maintainer: @pbnj-dragon " Last Change: 2024 Nov 07 " 2024 Nov 19 by the Vim Project (properly escape makeprg setting) +" 2025 Nov 06 by the Vim Project (do not set buffer-local makeprg) +" 2024 Dec 24 by the Vim Project (mute Found messages) if exists("current_compiler") | finish | endif let current_compiler = "ruff" @@ -11,10 +13,11 @@ let s:cpo_save = &cpo set cpo&vim " CompilerSet makeprg=ruff -let &l:makeprg= 'ruff check --output-format=concise ' - \ ..get(b:, 'ruff_makeprg_params', get(g:, 'ruff_makeprg_params', '--preview')) -exe 'CompilerSet makeprg='..escape(&l:makeprg, ' \|"') +exe 'CompilerSet makeprg=' .. escape('ruff check --output-format=concise ' + \ ..get(b:, 'ruff_makeprg_params', get(g:, 'ruff_makeprg_params', '--preview')), + \ ' \|"') CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,%f:%l:%c\ -\ %m,%f: +CompilerSet errorformat+=%-GFound\ %.%# let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/compiler/rustc.vim b/runtime/compiler/rustc.vim index b3c80919..0b488918 100644 --- a/runtime/compiler/rustc.vim +++ b/runtime/compiler/rustc.vim @@ -2,6 +2,8 @@ " Compiler: Rust Compiler " Maintainer: Chris Morgan " Latest Revision: 2023-09-11 +" 2025 Nov 15 by Vim project: remove test for Vim patch 7.4.191 +" 2025 Dec 18 by Vim project: detect more errors #18957 " For bugs, patches and license go to https://github.com/rust-lang/rust.vim if exists("current_compiler") @@ -17,11 +19,7 @@ set cpo&vim if get(g:, 'rustc_makeprg_no_percent', 0) CompilerSet makeprg=rustc else - if has('patch-7.4.191') - CompilerSet makeprg=rustc\ \%:S - else - CompilerSet makeprg=rustc\ \"%\" - endif + CompilerSet makeprg=rustc\ \%:S endif " New errorformat (after nightly 2016/08/10) @@ -32,8 +30,10 @@ CompilerSet errorformat= \%Eerror:\ %m, \%Eerror[E%n]:\ %m, \%Wwarning:\ %m, + \%Wwarning[E%n]:\ %m, \%Inote:\ %m, \%C\ %#-->\ %f:%l:%c, + \%C\ %#╭▸\ %f:%l:%c, \%E\ \ left:%m,%C\ right:%m\ %f:%l:%c,%Z " Old errorformat (before nightly 2016/08/10) diff --git a/runtime/compiler/tombi.vim b/runtime/compiler/tombi.vim new file mode 100644 index 00000000..7a286723 --- /dev/null +++ b/runtime/compiler/tombi.vim @@ -0,0 +1,69 @@ +" Vim compiler file +" Language: TOML +" Maintainer: Konfekt +" Last Change: 2025 Oct 29 + +if exists("current_compiler") | finish | endif +let current_compiler = "tombi" + +let s:cpo_save = &cpo +set cpo&vim + +if !executable('tombi') + echoerr "tombi compiler: 'tombi' executable not found in PATH" + let &cpo = s:cpo_save + unlet s:cpo_save + finish +endif + +" NO_COLOR support requires tombi 0.6.40 or later +if !exists('s:tombi_nocolor') + " Expect output like: 'tombi 0.6.40' or '0.6.40' + let s:out = trim(system('tombi --version')) + let s:tombi_ver = matchstr(s:out, '\v\s\d+\.\d+\.\d+$') + + function s:VersionGE(ver, req) abort + " Compare semantic versions a.b.c ≥ x.y.z + let l:pa = map(split(a:ver, '\.'), 'str2nr(v:val)') + let l:pb = map(split(a:req, '\.'), 'str2nr(v:val)') + while len(l:pa) < 3 | call add(l:pa, 0) | endwhile + while len(l:pb) < 3 | call add(l:pb, 0) | endwhile + for i in range(0, 2) + if l:pa[i] > l:pb[i] | return 1 + elseif l:pa[i] < l:pb[i] | return 0 + endif + endfor + return 1 + endfunction + let s:tombi_nocolor = s:VersionGE(s:tombi_ver, '0.6.40') + delfunction s:VersionGE +endif + +if s:tombi_nocolor + if has('win32') + if &shell =~# '\v<%(cmd|cmd)>' + CompilerSet makeprg=set\ NO_COLOR=1\ &&\ tombi\ lint + elseif &shell =~# '\v<%(powershell|pwsh)>' + CompilerSet makeprg=$env:NO_COLOR=\"1\";\ tombi\ lint + else + echoerr "tombi compiler: Unsupported shell for Windows" + endif + else " if has('unix') + CompilerSet makeprg=env\ NO_COLOR=1\ tombi\ lint + endif +else + " Older tombi: strip ANSI color codes with sed. + if executable('sed') + CompilerSet makeprg=tombi\ lint\ $*\ \|\ sed\ -E\ \"s/\\x1B(\\[[0-9;]*[JKmsu]\|\\(B)//g\" + else + echoerr "tombi compiler: tombi version < 0.6.40 requires 'sed' to strip ANSI color codes" + endif +endif + +CompilerSet errorformat=%E%*\\sError:\ %m,%Z%*\\sat\ %f:%l:%c +CompilerSet errorformat+=%W%*\\sWarning:\ %m,%Z%*\\sat\ %f:%l:%c +CompilerSet errorformat+=%-G1\ file\ failed\ to\ be\ linted +CompilerSet errorformat+=%-G1\ file\ linted\ successfully + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/ty.vim b/runtime/compiler/ty.vim new file mode 100644 index 00000000..d9ee5aae --- /dev/null +++ b/runtime/compiler/ty.vim @@ -0,0 +1,20 @@ +" Vim compiler file +" Compiler: Ty (Python Type Checker) +" Maintainer: @konfekt +" Last Change: 2024 Dec 24 + +if exists("current_compiler") | finish | endif +let current_compiler = "ty" + +let s:cpo_save = &cpo +set cpo&vim + +" CompilerSet makeprg=ty +exe 'CompilerSet makeprg=' .. escape( + \ get(b:, 'ty_makeprg', get(g:, 'ty_makeprg', 'ty check --no-progress --color=never')) + \ ..' --output-format=concise', ' \|"') +CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m,%f:%l:%c\ -\ %m,%f: +CompilerSet errorformat+=%-GFound\ %.%# + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/compiler/vimdoc.vim b/runtime/compiler/vimdoc.vim index a30355f8..ca34f105 100644 --- a/runtime/compiler/vimdoc.vim +++ b/runtime/compiler/vimdoc.vim @@ -2,6 +2,7 @@ " Language: vimdoc " Maintainer: Wu, Zhenyu " Latest Revision: 2024-04-13 +" Last Change: 2025 Nov 16 by The Vim Project (set errorformat) " " If you can not find 'vimdoc' in the package manager of your distribution e.g " 'pip', then you may need to build it from its source. @@ -15,6 +16,8 @@ let s:save_cpoptions = &cpoptions set cpoptions&vim CompilerSet makeprg=vimdoc +" CompilerSet errorformat=%f:%l:%c:\ %m,%f:%l:\ %m +CompilerSet errorformat& let &cpoptions = s:save_cpoptions unlet s:save_cpoptions diff --git a/runtime/compiler/yamllint.vim b/runtime/compiler/yamllint.vim index 88e2efb2..adb1dbde 100644 --- a/runtime/compiler/yamllint.vim +++ b/runtime/compiler/yamllint.vim @@ -3,6 +3,7 @@ " Maintainer: Romain Lafourcade " Last Change: 2021 July 21 " 2024 Apr 03 by The Vim Project (removed :CompilerSet definition) +" 2025 Nov 16 by The Vim Project (set errorformat) if exists("current_compiler") finish @@ -10,4 +11,6 @@ endif let current_compiler = "yamllint" CompilerSet makeprg=yamllint\ -f\ parsable +" CompilerSet errorformat=%f:%l:%c:\ [%t%*[^]]]\ %m,%f:%l:%c:\ [%*[^]]]\ %m +CompilerSet errorformat& diff --git a/runtime/compiler/zig_build_exe.vim b/runtime/compiler/zig_build_exe.vim index 259d0e26..440eff78 100644 --- a/runtime/compiler/zig_build_exe.vim +++ b/runtime/compiler/zig_build_exe.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Zig Compiler (zig build-exe) " Upstream: https://github.com/ziglang/zig.vim -" Last Change: 2024 Apr 05 by The Vim Project (removed :CompilerSet definition) +" Last Change: 2025 Nov 16 by The Vim Project (set errorformat) if exists('current_compiler') finish @@ -12,11 +12,9 @@ let current_compiler = 'zig_build_exe' let s:save_cpo = &cpo set cpo&vim -if has('patch-7.4.191') - CompilerSet makeprg=zig\ build-exe\ \%:S\ \$* -else - CompilerSet makeprg=zig\ build-exe\ \"%\"\ \$* -endif +CompilerSet makeprg=zig\ build-exe\ \%:S\ \$* +" CompilerSet errorformat=%f:%l:%c: %t%*[^:]: %m, %f:%l:%c: %m, %f:%l: %m +CompilerSet errorformat& let &cpo = s:save_cpo unlet s:save_cpo diff --git a/runtime/compiler/zig_test.vim b/runtime/compiler/zig_test.vim index dafeb6f1..afe57ad4 100644 --- a/runtime/compiler/zig_test.vim +++ b/runtime/compiler/zig_test.vim @@ -1,7 +1,7 @@ " Vim compiler file " Compiler: Zig Compiler (zig test) " Upstream: https://github.com/ziglang/zig.vim -" Last Change: 2024 Apr 05 by The Vim Project (removed :CompilerSet definition) +" Last Change: 2025 Nov 16 by The Vim Project (set errorformat) if exists('current_compiler') finish @@ -12,11 +12,9 @@ let current_compiler = 'zig_test' let s:save_cpo = &cpo set cpo&vim -if has('patch-7.4.191') - CompilerSet makeprg=zig\ test\ \%:S\ \$* -else - CompilerSet makeprg=zig\ test\ \"%\"\ \$* -endif +CompilerSet makeprg=zig\ test\ \%:S\ \$* +" CompilerSet errorformat=%f:%l:%c: %t%*[^:]: %m, %f:%l:%c: %m, %f:%l: %m +CompilerSet errorformat& let &cpo = s:save_cpo unlet s:save_cpo diff --git a/runtime/defaults.vim b/runtime/defaults.vim index 5c7100ed..9306af3f 100644 --- a/runtime/defaults.vim +++ b/runtime/defaults.vim @@ -1,7 +1,7 @@ " The default vimrc file. " " Maintainer: The Vim Project -" Last Change: 2025 Sep 10 +" Last Change: 2025 Nov 28 " Former Maintainer: Bram Moolenaar " " This is loaded if no vimrc file was found. @@ -136,7 +136,7 @@ if &t_Co > 2 || has("gui_running") syntax on " I like highlighting strings inside C comments. - " Revert with ":unlet c_comment_strings". + " Revert with ":unlet g:c_comment_strings". let c_comment_strings=1 endif diff --git a/runtime/doc/Make_all.mak b/runtime/doc/Make_all.mak index 938ee692..becb4ce4 100644 --- a/runtime/doc/Make_all.mak +++ b/runtime/doc/Make_all.mak @@ -339,6 +339,11 @@ CONVERTED = \ vimdiff-ru.UTF-8.1 \ vimtutor-ru.UTF-8.1 \ xxd-ru.UTF-8.1 \ + vim-sv.UTF-8.1 \ + evim-sv.UTF-8.1 \ + vimdiff-sv.UTF-8.1 \ + vimtutor-sv.UTF-8.1 \ + xxd-sv.UTF-8.1 \ vim-tr.UTF-8.1 \ evim-tr.UTF-8.1 \ vimdiff-tr.UTF-8.1 \ diff --git a/runtime/doc/Make_mvc.mak b/runtime/doc/Make_mvc.mak index 8dc09a35..a9fb3c58 100644 --- a/runtime/doc/Make_mvc.mak +++ b/runtime/doc/Make_mvc.mak @@ -449,6 +449,61 @@ xxd-ru.UTF-8.1 : xxd-ru.1 1>nul New-Item -Path . -Name $@ -ItemType file -Force !ENDIF +evim-sv.UTF-8.1 : evim-sv.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + $(PS) $(PSFLAGS) \ + [IO.File]::ReadAllText(\"$?\", \ + [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force +!ENDIF + +vim-sv.UTF-8.1 : vim-sv.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + $(PS) $(PSFLAGS) \ + [IO.File]::ReadAllText(\"$?\", \ + [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force +!ENDIF + +vimdiff-sv.UTF-8.1 : vimdiff-sv.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + $(PS) $(PSFLAGS) \ + [IO.File]::ReadAllText(\"$?\", \ + [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force +!ENDIF + +vimtutor-sv.UTF-8.1 : vimtutor-sv.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + $(PS) $(PSFLAGS) \ + [IO.File]::ReadAllText(\"$?\", \ + [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force +!ENDIF + +xxd-sv.UTF-8.1 : xxd-sv.1 +!IF DEFINED (ICONV) + $(ICONV) -f ISO-8859-1 -t UTF-8 $? >$@ +!ELSE +# Conversion to UTF-8 encoding without BOM and with UNIX-like line ending + $(PS) $(PSFLAGS) \ + [IO.File]::ReadAllText(\"$?\", \ + [Text.Encoding]::GetEncoding(28599)) ^| \ + 1>nul New-Item -Path . -Name $@ -ItemType file -Force +!ENDIF + evim-tr.UTF-8.1 : evim-tr.1 !IF DEFINED (ICONV) $(ICONV) -f ISO-8859-9 -t UTF-8 $? >$@ diff --git a/runtime/doc/Makefile b/runtime/doc/Makefile index 01b2c3e8..47bf385c 100644 --- a/runtime/doc/Makefile +++ b/runtime/doc/Makefile @@ -35,19 +35,19 @@ doctags: doctags.c $(CC) doctags.c -o doctags vim.man: vim.1 - nroff -man $? | sed -e s/.//g > $@ + nroff -c -man $? | sed -e s/.//g > $@ evim.man: evim.1 - nroff -man $? | sed -e s/.//g > $@ + nroff -c -man $? | sed -e s/.//g > $@ vimdiff.man: vimdiff.1 - nroff -man $? | sed -e s/.//g > $@ + nroff -c -man $? | sed -e s/.//g > $@ vimtutor.man: vimtutor.1 - nroff -man $? | sed -e s/.//g > $@ + nroff -c -man $? | sed -e s/.//g > $@ xxd.man: xxd.1 - nroff -man $? | sed -e s/.//g > $@ + nroff -c -man $? | sed -e s/.//g > $@ # Awk version of .txt to .html conversion. html: noerrors tags $(HTMLS) @@ -237,3 +237,18 @@ vimdiff-tr.UTF-8.1: vimdiff-tr.1 vimtutor-tr.UTF-8.1: vimtutor-tr.1 iconv -f latin5 -t UTF-8 $? >$@ + +vim-sv.UTF-8.1: vim-sv.1 + iconv -f latin1 -t UTF-8 $? >$@ + +evim-sv.UTF-8.1: evim-sv.1 + iconv -f latin1 -t UTF-8 $? >$@ + +vimdiff-sv.UTF-8.1: vimdiff-sv.1 + iconv -f latin1 -t UTF-8 $? >$@ + +vimtutor-sv.UTF-8.1: vimtutor-sv.1 + iconv -f latin1 -t UTF-8 $? >$@ + +xxd-sv.UTF-8.1: xxd-sv.1 + iconv -f latin1 -t UTF-8 $? >$@ diff --git a/runtime/doc/arabic.txt b/runtime/doc/arabic.txt index 72c9ed8e..d6caf6c5 100644 --- a/runtime/doc/arabic.txt +++ b/runtime/doc/arabic.txt @@ -1,7 +1,7 @@ -*arabic.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*arabic.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Nadim Shaikli + VIM REFERENCE MANUAL by Nadim Shaikli Arabic Language support (options & mappings) for Vim *Arabic* diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt index 134d9147..eba6e435 100644 --- a/runtime/doc/autocmd.txt +++ b/runtime/doc/autocmd.txt @@ -1,7 +1,7 @@ -*autocmd.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*autocmd.txt* For Vim version 9.2. Last change: 2026 Feb 25 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Automatic commands *autocommand* *autocommands* @@ -435,6 +435,7 @@ Name triggered by ~ |QuickFixCmdPre| before a quickfix command is run |QuickFixCmdPost| after a quickfix command is run +|SessionLoadPre| before loading a session file |SessionLoadPost| after loading a session file |SessionWritePost| after writing the session file using @@ -874,7 +875,8 @@ FileChangedShell When Vim notices that the modification time of to tell Vim what to do next. NOTE: When this autocommand is executed, the current buffer "%" may be different from the - buffer that was changed, which is in "". + buffer that was changed, which is in + "". NOTE: The commands must not change the current buffer, jump to another buffer or delete a buffer. *E246* *E811* @@ -1181,6 +1183,9 @@ SafeStateAgain Like SafeState but after processing any triggered often, don't do something that takes time. + *SessionLoadPre* +SessionLoadPre Before loading the session file created using + the |:mksession| command. *SessionLoadPost* SessionLoadPost After loading the session file created using the |:mksession| command. @@ -1324,9 +1329,9 @@ TermResponseAll After the response to |t_RV|, |t_RC|, |t_RS|, "osc", "version" (|t_RV|) Note that this event may be triggered halfway - executing another event, especially if file I/O, - a shell command or anything else that takes time - is involved. + executing another event, especially if file + I/O, a shell command or anything else that + takes time is involved. *TextChanged* TextChanged After a change was made to the text in the current buffer in Normal mode. That is after @@ -1455,8 +1460,9 @@ VimResume When the Vim instance is resumed after being :autocmd VimResume * checktime < *VimSuspend* VimSuspend When the Vim instance is suspended. Only when - CTRL-Z was typed inside Vim, or when the SIGTSTP - signal was sent to Vim, but not for SIGSTOP. + CTRL-Z was typed inside Vim, or when the + SIGTSTP signal was sent to Vim, but not for + SIGSTOP. *WinClosed* WinClosed When closing a window, just before it is removed from the window layout. The pattern diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt index e231dedb..ffc2b04f 100644 --- a/runtime/doc/builtin.txt +++ b/runtime/doc/builtin.txt @@ -1,7 +1,7 @@ -*builtin.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*builtin.txt* For Vim version 9.2. Last change: 2026 Mar 17 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Builtin functions *builtin-functions* @@ -23,9 +23,11 @@ Use CTRL-] on the function name to jump to the full explanation. USAGE RESULT DESCRIPTION ~ -abs({expr}) Float or Number absolute value of {expr} +abs({expr}) Float/Number + absolute value of {expr} acos({expr}) Float arc cosine of {expr} -add({object}, {item}) List/Blob append {item} to {object} +add({object}, {item}) List/Blob + append {item} to {object} and({expr}, {expr}) Number bitwise AND append({lnum}, {text}) Number append {text} below line {lnum} appendbufline({buf}, {lnum}, {text}) @@ -33,7 +35,8 @@ appendbufline({buf}, {lnum}, {text}) in buffer {buf} argc([{winid}]) Number number of files in the argument list argidx() Number current index in the argument list -arglistid([{winnr} [, {tabnr}]]) Number argument list id +arglistid([{winnr} [, {tabnr}]]) + Number argument list id argv({nr} [, {winid}]) String {nr} entry of the argument list argv([-1, {winid}]) List the argument list asin({expr}) Float arc sine of {expr} @@ -43,7 +46,7 @@ assert_equal({exp}, {act} [, {msg}]) assert_equalfile({fname-one}, {fname-two} [, {msg}]) Number assert file contents are equal assert_exception({error} [, {msg}]) - Number assert {error} is in v:exception + Number assert {error} is in |v:exception| assert_fails({cmd} [, {error} [, {msg} [, {lnum} [, {context}]]]]) Number assert {cmd} fails assert_false({actual} [, {msg}]) @@ -81,8 +84,8 @@ bufexists({buf}) Number |TRUE| if buffer {buf} exists buflisted({buf}) Number |TRUE| if buffer {buf} is listed bufload({buf}) Number load buffer {buf} if not loaded yet bufloaded({buf}) Number |TRUE| if buffer {buf} is loaded -bufname([{buf}]) String Name of the buffer {buf} -bufnr([{buf} [, {create}]]) Number Number of the buffer {buf} +bufname([{buf}]) String name of the buffer {buf} +bufnr([{buf} [, {create}]]) Number number of the buffer {buf} bufwinid({buf}) Number window ID of buffer {buf} bufwinnr({buf}) Number window number of buffer {buf} byte2line({byte}) Number line number at byte count {byte} @@ -103,6 +106,8 @@ ch_evalraw({handle}, {string} [, {options}]) ch_getbufnr({handle}, {what}) Number get buffer number for {handle}/{what} ch_getjob({channel}) Job get the Job of {channel} ch_info({handle}) String info about channel {handle} +ch_listen({address} [, {options}]) + Channel listen on {address} ch_log({msg} [, {handle}]) none write {msg} in the channel log file ch_logfile({fname} [, {mode}]) none start logging channel activity ch_open({address} [, {options}]) @@ -121,7 +126,8 @@ ch_setoptions({handle}, {options}) ch_status({handle} [, {options}]) String status of channel {handle} changenr() Number current change number -char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in {expr} +char2nr({expr} [, {utf8}]) Number ASCII/UTF-8 value of first char in + {expr} charclass({string}) Number character class of {string} charcol({expr} [, {winid}]) Number column number of cursor or mark charidx({string}, {idx} [, {countcc} [, {utf16}]]) @@ -136,7 +142,6 @@ complete({startcol}, {matches}) none set Insert mode completion complete_add({expr}) Number add completion match complete_check() Number check for key typed during completion complete_info([{what}]) Dict get current completion information -complete_match([{lnum}, {col}]) List get completion column and trigger text confirm({msg} [, {choices} [, {default} [, {type}]]]) Number number of choice picked by user copy({expr}) any make a shallow copy of {expr} @@ -181,10 +186,12 @@ expand({expr} [, {nosuf} [, {list}]]) expandcmd({string} [, {options}]) String expand {string} like with `:edit` extend({expr1}, {expr2} [, {expr3}]) - List/Dict insert items of {expr2} into {expr1} + List/Dict + insert items of {expr2} into {expr1} extendnew({expr1}, {expr2} [, {expr3}]) - List/Dict like |extend()| but creates a new - List or Dictionary + List/Dict + like |extend()| but creates a new List + or Dictionary feedkeys({string} [, {mode}]) Number add key sequence to typeahead buffer filecopy({from}, {to}) Number |TRUE| if copying file {from} to {to} worked @@ -195,7 +202,8 @@ filter({expr1}, {expr2}) List/Dict/Blob/String {expr2} is 0 finddir({name} [, {path} [, {count}]]) findfile({name} [, {path} [, {count}]]) - String/List find dir/file {name} in {path} + String/List + find dir/file {name} in {path} flatten({list} [, {maxdepth}]) List flatten {list} up to {maxdepth} levels flattennew({list} [, {maxdepth}]) List flatten a copy of {list} @@ -217,7 +225,8 @@ funcref({name} [, {arglist}] [, {dict}]) Funcref reference to function {name} function({name} [, {arglist}] [, {dict}]) Funcref named reference to function {name} -garbagecollect([{atexit}]) none free memory, breaking cyclic references +garbagecollect([{atexit}]) none free memory, breaking cyclic + references get({list}, {idx} [, {def}]) any get item {idx} from {list} or {def} get({dict}, {key} [, {def}]) any get item {key} from {dict} or {def} get({func}, {what}) any get property of funcref/partial {func} @@ -230,7 +239,7 @@ getbufvar({buf}, {varname} [, {def}]) getcellpixels() List get character cell pixel size getcellwidths() List get character cell width overrides getchangelist([{buf}]) List list of change list items -getchar([{expr} [, {opts}]]) Number or String +getchar([{expr} [, {opts}]]) Number/String get one character from the user getcharmod() Number modifiers for the last typed character getcharpos({expr}) List position of cursor, mark, etc. @@ -246,7 +255,8 @@ getcmdprompt() String return the current command-line prompt getcmdscreenpos() Number return cursor screen position in command-line getcmdtype() String return current command-line type -getcmdwintype() String return current command-line window type +getcmdwintype() String return current command-line window + type getcompletion({pat}, {type} [, {filtered}]) List list of cmdline completion matches getcompletiontype({pat}) String return the type of the command-line @@ -264,7 +274,8 @@ getimstatus() Number |TRUE| if the IME status is active 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 +getline({lnum}, {end}) List lines {lnum} to {end} of current + buffer getloclist({nr}) List list of location list items getloclist({nr}, {what}) Dict get specific location list properties getmarklist([{buf}]) List list of global/local marks @@ -276,7 +287,8 @@ getpos({expr}) List position of cursor, mark, etc. getqflist() List list of quickfix items getqflist({what}) Dict get specific quickfix list properties getreg([{regname} [, 1 [, {list}]]]) - String or List contents of a register + String/List + contents of a register getreginfo([{regname}]) Dict information about a register getregion({pos1}, {pos2} [, {opts}]) List get the text from {pos1} to {pos2} @@ -287,7 +299,8 @@ getscriptinfo([{opts}]) List list of sourced scripts getstacktrace() List get current stack trace of Vim scripts gettabinfo([{expr}]) List list of tab pages gettabvar({nr}, {varname} [, {def}]) - any variable {varname} in tab {nr} or {def} + any variable {varname} in tab {nr} or + {def} gettabwinvar({tabnr}, {winnr}, {name} [, {def}]) any {name} in {winnr} in tab page {tabnr} gettagstack([{nr}]) Dict get the tag stack of window {nr} @@ -306,8 +319,8 @@ globpath({path}, {expr} [, {nosuf} [, {list} [, {alllinks}]]]) has({feature} [, {check}]) Number |TRUE| if feature {feature} supported has_key({dict}, {key}) Number |TRUE| if {dict} has entry {key} haslocaldir([{winnr} [, {tabnr}]]) - Number |TRUE| if the window executed |:lcd| - or |:tcd| + Number |TRUE| if the window executed `:lcd` or + `:tcd` hasmapto({what} [, {mode} [, {abbr}]]) Number |TRUE| if mapping to {what} exists histadd({history}, {item}) Number add an item to a history @@ -333,9 +346,13 @@ inputdialog({prompt} [, {text} [, {cancelreturn}]]) inputlist({textlist}) Number let the user pick from a choice list inputrestore() Number restore typeahead inputsave() Number save and clear typeahead -inputsecret({prompt} [, {text}]) String like input() but hiding the text -insert({object}, {item} [, {idx}]) List insert {item} in {object} [before {idx}] -instanceof({object}, {class}) Number |TRUE| if {object} is an instance of {class} +inputsecret({prompt} [, {text}]) + String like input() but hiding the text +insert({object}, {item} [, {idx}]) + List insert {item} in {object} + [before {idx}] +instanceof({object}, {class}) Number |TRUE| if {object} is an instance of + {class} interrupt() none interrupt script execution invert({expr}) Number bitwise invert isabsolutepath({path}) Number |TRUE| if {path} is an absolute path @@ -347,7 +364,8 @@ isnan({expr}) Number |TRUE| if {expr} is NaN items({expr}) List key/index-value pairs in {expr} job_getchannel({job}) Channel get the channel handle for {job} job_info([{job}]) Dict get information about {job} -job_setoptions({job}, {options}) none set options for {job} +job_setoptions({job}, {options}) + none set options for {job} job_start({command} [, {options}]) Job start a job job_status({job}) String get the status of {job} @@ -359,9 +377,10 @@ json_decode({string}) any decode JSON json_encode({expr}) String encode JSON keys({dict}) List keys in {dict} keytrans({string}) String translate internal keycodes to a form - that can be used by |:map| + that can be used by `:map` len({expr}) Number the length of {expr} -libcall({lib}, {func}, {arg}) String call {func} in library {lib} with {arg} +libcall({lib}, {func}, {arg}) String call {func} in library {lib} with + {arg} libcallnr({lib}, {func}, {arg}) Number idem, but return a Number line({expr} [, {winid}]) Number line nr of cursor, last line or mark line2byte({lnum}) Number byte count of line {lnum} @@ -380,7 +399,7 @@ luaeval({expr} [, {expr}]) any evaluate |Lua| expression map({expr1}, {expr2}) List/Dict/Blob/String change each item in {expr1} to {expr2} maparg({name} [, {mode} [, {abbr} [, {dict}]]]) - String or Dict + String/Dict rhs of mapping {name} in mode {mode} mapcheck({name} [, {mode} [, {abbr}]]) String check for mappings matching {name} @@ -395,7 +414,7 @@ matchadd({group}, {pattern} [, {priority} [, {id} [, {dict}]]]) Number highlight {pattern} with {group} matchaddpos({group}, {pos} [, {priority} [, {id} [, {dict}]]]) Number highlight positions with {group} -matcharg({nr}) List arguments of |:match| +matcharg({nr}) List arguments of `:match` matchbufline({buf}, {pat}, {lnum}, {end}, [, {dict}) List all the {pat} matches in buffer {buf} matchdelete({id} [, {win}]) Number delete match identified by {id} @@ -406,7 +425,8 @@ matchfuzzy({list}, {str} [, {dict}]) matchfuzzypos({list}, {str} [, {dict}]) List fuzzy match {str} in {list} matchlist({expr}, {pat} [, {start} [, {count}]]) - List match and submatches of {pat} in {expr} + List match and submatches of {pat} in + {expr} matchstr({expr}, {pat} [, {start} [, {count}]]) String {count}'th match of {pat} in {expr} matchstrlist({list}, {pat} [, {dict}) @@ -423,11 +443,13 @@ mzeval({expr}) any evaluate |MzScheme| expression nextnonblank({lnum}) Number line nr of non-blank line >= {lnum} ngettext({single}, {plural}, {number}[, {domain}]) String translate text based on {number} -nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value {expr} +nr2char({expr} [, {utf8}]) String single char with ASCII/UTF-8 value + {expr} or({expr}, {expr}) Number bitwise OR pathshorten({expr} [, {len}]) String shorten directory names in a path perleval({expr}) any evaluate |Perl| expression -popup_atcursor({what}, {options}) Number create popup window near the cursor +popup_atcursor({what}, {options}) + Number create popup window near the cursor popup_beval({what}, {options}) Number create popup window for 'ballooneval' popup_clear() none close all popup windows popup_close({id} [, {result}]) none close popup window {id} @@ -447,7 +469,8 @@ popup_menu({what}, {options}) Number create a popup window used as a menu popup_move({id}, {options}) none set position of popup window {id} popup_notification({what}, {options}) Number create a notification popup window -popup_setbuf({id}, {buf}) Bool set the buffer for the popup window {id} +popup_setbuf({id}, {buf}) Bool set the buffer for the popup window + {id} popup_setoptions({id}, {options}) none set options for popup window {id} popup_settext({id}, {text}) none set the text of popup window {id} @@ -457,10 +480,13 @@ preinserted() Number whether text is inserted after cursor prevnonblank({lnum}) Number line nr of non-blank line <= {lnum} printf({fmt}, {expr1}...) String format text prompt_getprompt({buf}) String get prompt text -prompt_setcallback({buf}, {expr}) none set prompt callback function -prompt_setinterrupt({buf}, {text}) none set prompt interrupt function +prompt_setcallback({buf}, {expr}) + none set prompt callback function +prompt_setinterrupt({buf}, {text}) + none set prompt interrupt function prompt_setprompt({buf}, {text}) none set prompt text -prop_add({lnum}, {col}, {props}) none add one text property +prop_add({lnum}, {col}, {props}) + none add one text property prop_add_list({props}, [[{lnum}, {col}, {end-lnum}, {end-col}], ...]) none add multiple text properties prop_clear({lnum} [, {lnum-end} [, {props}]]) @@ -494,6 +520,8 @@ readdirex({dir} [, {expr} [, {dict}]]) List file info in {dir} selected by {expr} readfile({fname} [, {type} [, {max}]]) List get list of lines from file {fname} +redraw_listener_add({opts}) Number add callbacks to listen for redraws +redraw_listener_remove({id}) none remove a redraw listener reduce({object}, {func} [, {initial}]) any reduce {object} using {func} reg_executing() String get the executing register name @@ -526,9 +554,10 @@ round({expr}) Float round off {expr} rubyeval({expr}) any evaluate |Ruby| expression screenattr({row}, {col}) Number attribute at screen position screenchar({row}, {col}) Number character at screen position -screenchars({row}, {col}) List List of characters at screen position +screenchars({row}, {col}) List list of characters at screen position screencol() Number current cursor column -screenpos({winid}, {lnum}, {col}) Dict screen row and col of a text character +screenpos({winid}, {lnum}, {col}) + Dict screen row and col of a text character screenrow() Number current cursor row screenstring({row}, {col}) String characters at screen position search({pattern} [, {flags} [, {stopline} [, {timeout} [, {skip}]]]]) @@ -569,7 +598,9 @@ 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}) none set {varname} in tab page {nr} to {val} +settabvar({nr}, {varname}, {val}) + none set {varname} in tab page {nr} to + {val} settabwinvar({tabnr}, {winnr}, {varname}, {val}) none set {varname} in window {winnr} in tab page {tabnr} to {val} @@ -599,7 +630,8 @@ sign_unplacelist({list}) List unplace a list of signs simplify({filename}) String simplify filename as much as possible sin({expr}) Float sine of {expr} sinh({expr}) Float hyperbolic sine of {expr} -slice({expr}, {start} [, {end}]) String, List or Blob +slice({expr}, {start} [, {end}]) + String/List/Blob slice of a String, List or Blob sort({list} [, {how} [, {dict}]]) List sort {list}, compare with {how} @@ -629,7 +661,8 @@ strcharpart({str}, {start} [, {len} [, {skipcc}]]) String {len} characters of {str} at character {start} strchars({expr} [, {skipcc}]) Number character count of the String {expr} -strdisplaywidth({expr} [, {col}]) Number display length of the String {expr} +strdisplaywidth({expr} [, {col}]) + Number display length of the String {expr} strftime({format} [, {time}]) String format time with a specified format strgetchar({str}, {index}) Number get char {index} from {str} stridx({haystack}, {needle} [, {start}]) @@ -637,20 +670,24 @@ stridx({haystack}, {needle} [, {start}]) string({expr}) String String representation of {expr} value strlen({expr}) Number length of the String {expr} strpart({str}, {start} [, {len} [, {chars}]]) - String {len} bytes/chars of {str} at - byte {start} + String {len} bytes/chars of {str} at byte + {start} strptime({format}, {timestring}) - Number Convert {timestring} to unix timestamp + Number convert {timestring} to unix timestamp strridx({haystack}, {needle} [, {start}]) Number last index of {needle} in {haystack} strtrans({expr}) String translate string to make it printable strutf16len({string} [, {countcc}]) - Number number of UTF-16 code units in {string} -strwidth({expr}) Number display cell length of the String {expr} -submatch({nr} [, {list}]) String or List - specific match in ":s" or substitute() + Number number of UTF-16 code units in + {string} +strwidth({expr}) Number display cell length of the String + {expr} +submatch({nr} [, {list}]) String/List + specific match in `:substitute` or + substitute() substitute({expr}, {pat}, {sub}, {flags}) - String all {pat} in {expr} replaced with {sub} + String all {pat} in {expr} replaced with + {sub} swapfilelist() List swap files found in 'directory' swapinfo({fname}) Dict information about swap file {fname} swapname({buf}) String swap file of buffer {buf} @@ -659,12 +696,14 @@ synIDattr({synID}, {what} [, {mode}]) String attribute {what} of syntax ID {synID} synIDtrans({synID}) Number translated syntax ID of {synID} synconcealed({lnum}, {col}) List info about concealing -synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and {col} +synstack({lnum}, {col}) List stack of syntax IDs at {lnum} and + {col} system({expr} [, {input}]) String output of shell command/filter {expr} systemlist({expr} [, {input}]) List output of shell command/filter {expr} tabpagebuflist([{arg}]) List list of buffer numbers in tab page tabpagenr([{arg}]) Number number of current or last tab page -tabpagewinnr({tabarg} [, {arg}]) Number number of current window in tab page +tabpagewinnr({tabarg} [, {arg}]) + Number number of current window in tab page tagfiles() List tags files used taglist({expr} [, {filename}]) List list of tags matching {expr} tan({expr}) Float tangent of {expr} @@ -694,7 +733,8 @@ term_setansicolors({buf}, {colors}) none set ANSI palette in GUI color mode term_setapi({buf}, {expr}) none set |terminal-api| function name prefix term_setkill({buf}, {how}) none set signal to stop job in terminal -term_setrestore({buf}, {command}) none set command to restore terminal +term_setrestore({buf}, {command}) + none set command to restore terminal term_setsize({buf}, {rows}, {cols}) none set the size of a terminal term_start({cmd} [, {options}]) Number open a terminal window and run a job @@ -734,8 +774,10 @@ timer_start({time}, {callback} [, {options}]) Number create a timer timer_stop({timer}) none stop a timer timer_stopall() none stop all timers -tolower({expr}) String the String {expr} switched to lowercase -toupper({expr}) String the String {expr} switched to uppercase +tolower({expr}) String the String {expr} switched to + lowercase +toupper({expr}) String the String {expr} switched to + uppercase tr({src}, {fromstr}, {tostr}) String translate chars of {src} in {fromstr} to chars in {tostr} trim({text} [, {mask} [, {dir}]]) @@ -754,7 +796,7 @@ utf16idx({string}, {idx} [, {countcc} [, {charidx}]]) Number UTF-16 index of byte {idx} in {string} values({dict}) List values in {dict} virtcol({expr} [, {list} [, {winid}]) - Number or List + Number/List screen column of cursor or mark virtcol2col({winid}, {lnum}, {col}) Number byte index of a character on screen @@ -781,7 +823,8 @@ winheight({nr}) Number height of window {nr} winlayout([{tabnr}]) List layout of windows in tab {tabnr} winline() Number window line of the cursor winnr([{expr}]) Number number of current window -winrestcmd() String returns command to restore window sizes +winrestcmd() String returns command to restore window + sizes winrestview({dict}) none restore view of current window winsaveview() Dict save view of current window winwidth({nr}) Number width of window {nr} @@ -909,7 +952,7 @@ appendbufline({buf}, {lnum}, {text}) *appendbufline()* for an invalid {lnum}, since {lnum} isn't actually used. Can also be used as a |method| after a List, the base is - passed as the second argument: > + passed as the third argument: > mylist->appendbufline(buf, lnum) < Return type: |Number| @@ -1348,6 +1391,9 @@ blob2str({blob} [, {options}]) *blob2str()* Can also be used as a |method|: > GetBlob()->blob2str() < + If `iconv` is not available and the encoding cannot be converted + using built-in conversion rules, an error will be reported. + Return type: list @@ -2072,51 +2118,6 @@ complete_info([{what}]) *complete_info()* Return type: dict -complete_match([{lnum}, {col}]) *complete_match()* - Searches backward from the given position and returns a List - of matches according to the 'isexpand' option. When no - arguments are provided, uses the current cursor position. - - Each match is represented as a List containing - [startcol, trigger_text] where: - - startcol: column position where completion should start, - or -1 if no trigger position is found. For multi-character - triggers, returns the column of the first character. - - trigger_text: the matching trigger string from 'isexpand', - or empty string if no match was found or when using the - default 'iskeyword' pattern. - - When 'isexpand' is empty, uses the 'iskeyword' pattern "\k\+$" - to find the start of the current keyword. - - Examples: > - set isexpand=.,->,/,/*,abc - func CustomComplete() - let res = complete_match() - if res->len() == 0 | return | endif - let [col, trigger] = res[0] - let items = [] - if trigger == '/*' - let items = ['/** */'] - elseif trigger == '/' - let items = ['/*! */', '// TODO:', '// fixme:'] - elseif trigger == '.' - let items = ['length()'] - elseif trigger =~ '^\->' - let items = ['map()', 'reduce()'] - elseif trigger =~ '^\abc' - let items = ['def', 'ghk'] - endif - if items->len() > 0 - let startcol = trigger =~ '^/' ? col : col + len(trigger) - call complete(startcol, items) - endif - endfunc - inoremap call CustomComplete() -< - Return type: list> - - confirm({msg} [, {choices} [, {default} [, {type}]]]) *confirm()* confirm() offers the user a dialog, from which a choice can be made. It returns the number of the choice. For the first @@ -2757,13 +2758,18 @@ executable({expr}) *executable()* then the name is also tried without adding an extension. On MS-Windows it only checks if the file exists and is not a directory, not if it's really executable. + On MS-Windows an executable in the same directory as the Vim executable is always found. Since this directory is added to $PATH it should also work to execute it |win32-PATH|. - *NoDefaultCurrentDirectoryInExePath* - On MS-Windows an executable in Vim's current working directory - is also normally found, but this can be disabled by setting - the $NoDefaultCurrentDirectoryInExePath environment variable. + *$NoDefaultCurrentDirectoryInExePath* + On MS-Windows when using cmd.exe as 'shell' an executable in + Vim's current working directory is also normally found, which + can be disabled by setting the + `$NoDefaultCurrentDirectoryInExePath` environment variable. + This variable is always set by Vim when executing external + commands (e.g., via |:!|, |:make|, or |system()|) for security + reasons. The result is a Number: 1 exists @@ -2933,7 +2939,7 @@ exists({expr}) *exists()* Can also be used as a |method|: > Varname()->exists() < - Return type: |String| + Return type: |Number| exists_compiled({expr}) *exists_compiled()* @@ -2950,7 +2956,7 @@ exists_compiled({expr}) *exists_compiled()* Can only be used in a |:def| function. *E1233* This does not work to check for arguments or local variables. - Return type: |String| + Return type: |Number| exp({expr}) *exp()* @@ -4726,7 +4732,7 @@ getloclist({nr} [, {what}]) *getloclist()* :echo getloclist(3, {'all': 0}) :echo getloclist(5, {'filewinid': 0}) < - Return type: list> or list + Return type: list> or dict getmarklist([{buf}]) *getmarklist()* @@ -4878,6 +4884,11 @@ getpos({expr}) *getpos()* within the line. To get the character position in the line, use |getcharpos()|. + The visual marks |'<| and |'>| refer to the beginning and end + of the visual selection relative to the buffer. Note that + this differs from |setpos()|, where they are relative to the + cursor position. + 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 equal to |v:maxcol|. @@ -5002,7 +5013,7 @@ getqflist([{what}]) *getqflist()* :echo getqflist({'nr': 2, 'title': 1}) :echo getqflist({'lines' : ["F1:10:L10"]}) < - Return type: list> or list + Return type: list> or dict getreg([{regname} [, 1 [, {list}]]]) *getreg()* @@ -5389,9 +5400,13 @@ getwininfo([{winid}]) *getwininfo()* {only with the +quickfix feature} quickfix 1 if quickfix or location list window {only with the +quickfix feature} + status_height status lines height (0 or 1) + tabnr tab page number terminal 1 if a terminal window {only with the +terminal feature} - tabnr tab page number + textoff number of columns occupied by any + 'foldcolumn', 'signcolumn' and line + number in front of the text topline first displayed buffer line variables a reference to the dictionary with window-local variables @@ -5400,9 +5415,6 @@ getwininfo([{winid}]) *getwininfo()* otherwise wincol leftmost screen column of the window; "col" from |win_screenpos()| - textoff number of columns occupied by any - 'foldcolumn', 'signcolumn' and line - number in front of the text winid |window-ID| winnr window number winrow topmost screen line of the window; @@ -6819,9 +6831,10 @@ listener_add({callback} [, {buf} [, {unbuffered}]]) *listener_add()* The entries are in the order the changes were made, thus the most recent change is at the end. - Because of the third trigger reason for triggering a callback - listed above, the line numbers passed to the callback are not - guaranteed to be valid. If this is a problem then make + Because of the third reason for triggering a callback listed + above, the line numbers passed to the callback are not + guaranteed to be valid. In particular, the end value can be + greater than line('$') + 1. If this is a problem then make {unbuffered} |TRUE|. When {unbuffered} is |TRUE| the {callback} is invoked for every @@ -7971,8 +7984,8 @@ nr2char({expr} [, {utf8}]) *nr2char()* value {expr}. Examples: > nr2char(64) returns "@" nr2char(32) returns " " -< When {utf8} is omitted or zero, the current 'encoding' is used. - Example for "utf-8": > +< When {utf8} is omitted or zero, the current 'encoding' is + used. Example for "utf-8": > nr2char(300) returns I with bow character < When {utf8} is TRUE, always return UTF-8 characters. Note that a NUL character in the file is specified with @@ -8375,24 +8388,24 @@ printf({fmt}, {expr1} ...) *printf()* *E1502* You can re-use a [field-width] (or [precision]) argument: > - echo printf("%1$d at width %2$d is: %01$*2$d", 1, 2) + echo printf("%1$d at width %2$d is: %1$0*2$d", 1, 2) < 1 at width 2 is: 01 However, you can't use it as a different type: > - echo printf("%1$d at width %2$ld is: %01$*2$d", 1, 2) + echo printf("%1$d at width %2$ld is: %1$0*2$d", 1, 2) < E1502: Positional argument 2 used as field width reused as different type: long int/int *E1503* When a positional argument is used, but not the correct number or arguments is given, an error is raised: > - echo printf("%1$d at width %2$d is: %01$*2$.*3$d", 1, 2) + echo printf("%1$d at width %2$d is: %1$0*2$.*3$d", 1, 2) < E1503: Positional argument 3 out of bounds: %1$d at width - %2$d is: %01$*2$.*3$d + %2$d is: %1$0*2$.*3$d Only the first error is reported: > - echo printf("%01$*2$.*3$d %4$d", 1, 2) -< E1503: Positional argument 3 out of bounds: %01$*2$.*3$d + echo printf("%1$0*2$.*3$d %4$d", 1, 2) +< E1503: Positional argument 3 out of bounds: %1$0*2$.*3$d %4$d *E1504* @@ -8824,6 +8837,48 @@ readfile({fname} [, {type} [, {max}]]) *readfile()* Return type: list or list +redraw_listener_add({opts}) *redraw_listener_add()* + Add a listener that holds callback functions that will be + called at specific times in the redraw cycle. {opts} is a + dictionary that contain the callback functions to be defined. + At least one callback must be specified. *E1571* + Returns a unique ID that can be passed to + |redraw_listener_remove()|. + + {opts} may have the following entries: + + on_start Called first on each screen redraw. Takes no + arguments and returns nothing. + on_end Called at the end of each screen redraw. + Takes no arguments and returns nothing. + + A good use case for this function is with the |listener_add()| + callback with unbuffered set to TRUE. This allows you to + modify the state on buffer changes, and finally render that + state just before the next redraw, only if it has changed. + Attempting to render or redraw for every single buffer change + would be very inefficient. + + You may not call redraw_listener_add() during any of the + callbacks defined in {opts}. *E1570* + + Can also be used as a |method|: > + GetOpts()->redraw_listener_add() +< + Return type: |Number| + + +redraw_listener_remove({id}) *redraw_listener_remove()* + Remove a redraw listener previously added with + |redraw_listener_add()|. Returns FALSE when {id} could not be + found, TRUE when {id} was removed. + + Can also be used as a |method|: > + GetRedrawListenerId()->redraw_listener_remove() +< + Return type: |Number| + + reduce({object}, {func} [, {initial}]) *reduce()* *E998* {func} is called for every item in {object}, which can be a |String|, |List|, |Tuple| or a |Blob|. {func} is called with @@ -10107,9 +10162,14 @@ setpos({expr}, {list}) *setpos()* preferred column is not set. When it is present and setting a mark position it is not used. - Note that for '< and '> changing the line number may result in - the marks to be effectively be swapped, so that '< is always - before '>. + Note that for |'<| and |'>| changing the line number may + result in the marks to be effectively swapped, so that |'<| is + always before |'>|. + + The visual marks |'<| and |'>| refer to the beginning and end + of the visual selection relative to the cursor position. + Note that this differs from |getpos()|, where they are + relative to the buffer. Returns 0 when the position could be set, -1 otherwise. An error message is given if {expr} is invalid. @@ -11578,7 +11638,7 @@ synIDtrans({synID}) *synIDtrans()* synconcealed({lnum}, {col}) *synconcealed()* - The result is a |List| with currently three items: + The result is a |List| with 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. {lnum} is used like with |getline()|. @@ -11653,7 +11713,11 @@ system({expr} [, {input}]) *system()* *E677* When prepended by |:silent| the terminal will not be set to cooked mode. This is meant to be used for commands that do not need the user to type. It avoids stray characters showing - up on the screen which require |CTRL-L| to remove. > + up on the screen which require |CTRL-L| to remove. + When calling system() from a 'statusline' expression, an + |autocommand| or a |timer| callback, you should use |:silent| + to avoid terminal responses (e.g. from cursor style queries) + being echoed on the screen. > :silent let f = system('ls *.vim') < Note: Use |shellescape()| or |::S| with |expand()| or @@ -11711,6 +11775,11 @@ systemlist({expr} [, {input}]) *systemlist()* < Returns an empty string on error. + Like |system()|, prepend |:silent| when the command does not + need user interaction and is called from a 'statusline' + expression, an |autocommand| or a |timer| callback. See + |system()| for details. + Can also be used as a |method|: > :echo GetCmd()->systemlist() < @@ -12554,8 +12623,7 @@ win_findbuf({bufnr}) *win_findbuf()* Can also be used as a |method|: > GetBufnr()->win_findbuf() < - Return type: list or list - + Return type: list win_getid([{win} [, {tab}]]) *win_getid()* Get the |window-ID| for the specified window. @@ -12601,7 +12669,8 @@ win_gettype([{nr}]) *win_gettype()* win_gotoid({expr}) *win_gotoid()* Go to window with ID {expr}. This may also change the current tabpage. - Return TRUE if successful, FALSE if the window cannot be found. + Return TRUE if successful, FALSE if the window cannot be + found. Can also be used as a |method|: > GetWinid()->win_gotoid() @@ -13046,6 +13115,7 @@ acl Compiled with |ACL| support. all_builtin_terms Compiled with all builtin terminals enabled. (always true) amiga Amiga version of Vim. +android Android version of Vim. *android* arabic Compiled with Arabic support |Arabic|. arp Compiled with ARP support (Amiga). autocmd Compiled with autocommand support. (always true) @@ -13216,6 +13286,7 @@ termguicolors Compiled with true color in terminal support. terminal Compiled with |terminal| support. terminfo Compiled with terminfo instead of termcap. termresponse Compiled with support for |t_RV| and |v:termresponse|. +termux Termux version of Vim. *termux* textobjects Compiled with support for |text-objects|. textprop Compiled with support for |text-properties|. tgetent Compiled with tgetent support, able to use a termcap diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt index 878d3885..0b1b4c3c 100644 --- a/runtime/doc/change.txt +++ b/runtime/doc/change.txt @@ -1,7 +1,7 @@ -*change.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*change.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar This file describes commands that delete or change text. In this context, @@ -1094,7 +1094,8 @@ inside of strings can change! Also see 'softtabstop' option. > *:y* *:yank* *E850* :[range]y[ank] [x] Yank [range] lines [into register x]. Yanking to the "* or "+ registers is possible only when the - |+clipboard| feature is included. + |+clipboard| or |+clipboard_provider| features are + included. :[range]y[ank] [x] {count} Yank {count} lines, starting with last line number @@ -1776,7 +1777,9 @@ l Long lines are not broken in insert mode: When a line was longer than automatically format it. *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. + Asian text where every character is a word on its own. Note that + line breaks may also be added after punctuation characters such as + colons to match the CJK linebreaking rules. *fo-M* M When joining lines, don't insert a space before or after a multibyte character. Overrules the 'B' flag. diff --git a/runtime/doc/channel.txt b/runtime/doc/channel.txt index 29654834..7ad10fa0 100644 --- a/runtime/doc/channel.txt +++ b/runtime/doc/channel.txt @@ -1,7 +1,7 @@ -*channel.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*channel.txt* For Vim version 9.2. Last change: 2026 Mar 13 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Inter-process communication *channel* @@ -26,6 +26,7 @@ The Netbeans interface also uses a channel. |netbeans| 13. Controlling a job |job-control| 14. Using a prompt buffer |prompt-buffer| 15. Language Server Protocol |language-server-protocol| +16. Debug Adapter Protocol |debug-adapter-protocol| *E1277* {only when compiled with the |+channel| feature for channel stuff} @@ -56,6 +57,7 @@ NL every message ends in a NL (newline) character JSON JSON encoding |json_encode()| JS JavaScript style JSON-like encoding |js_encode()| LSP Language Server Protocol encoding |language-server-protocol| +DAP Debug Adapter Protocol encoding |debug-adapter-protocol| Common combination are: - Using a job connected through pipes in NL mode. E.g., to run a style @@ -112,6 +114,32 @@ Vim to write lines in log file: > call ch_logfile('channellog', 'w') See |ch_logfile()|. +You can also make Vim act as a server using |ch_listen()|. This does not +require an external server program. + + *channel-listen-demo* +Start Vim and create a listening channel: > + func OnAccept(channel, clientaddr) + " Log the connection + echomsg "Accepted connection from " .. a:clientaddr + + " Get current time and send it to the client + let current_time = strftime("%Y-%m-%d %H:%M:%S") + call ch_sendraw(a:channel, "Vim Server Time: " .. current_time .. "\n") + + " Optional: close immediately if you only want to provide the time + call ch_close(a:channel) + endfunc + + " Start listening on port 8765 + let server = ch_listen('localhost:8765', {"callback": "OnAccept"}) + +From another Vim instance (or any program) you can connect to it: > + let channel = ch_open('localhost:8765') + +When done, close the server channel: > + call ch_close(server) + ============================================================================== 3. Opening a channel *channel-open* @@ -130,6 +158,11 @@ a Unix-domain socket path prefixed by "unix:". E.g. > [2001:db8::1]:8765 " IPv6 + port unix:/tmp/my-socket " Unix-domain socket path +When a domain name resolves to multiple addresses (e.g., both IPv6 and IPv4), +Vim tries each address in order. If a connection is slow or unreachable, it +quickly falls back to the next address. This helps when IPv6 or IPv4 is +unreachable on the network. + {options} is a dictionary with optional entries: *channel-open-options* "mode" can be: *channel-mode* @@ -138,6 +171,7 @@ a Unix-domain socket path prefixed by "unix:". E.g. > "nl" - Use messages that end in a NL character "raw" - Use raw messages "lsp" - Use language server protocol encoding + "dap" - Use debug adapter protocol encoding *channel-callback* *E921* "callback" A function that is called when a message is received that is not handled otherwise (e.g. a JSON message with ID zero). It @@ -148,8 +182,9 @@ a Unix-domain socket path prefixed by "unix:". E.g. > endfunc let channel = ch_open("localhost:8765", {"callback": "Handle"}) < - When "mode" is "json" or "js" or "lsp" the "msg" argument is - the body of the received message, converted to Vim types. + When "mode" is any of "json", "js", "lsp" or "dap" the "msg" + argument is the body of the received message, converted to Vim + types. When "mode" is "nl" the "msg" argument is one message, excluding the NL. When "mode" is "raw" the "msg" argument is the whole message @@ -532,7 +567,8 @@ ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()* according to the type of channel. The function cannot be used with a raw channel. See |channel-use|. {handle} can be a Channel or a Job that has a Channel. - When using the "lsp" channel mode, {expr} must be a |Dict|. + When using the "lsp" or "dap" channel mode, {expr} must be a + |Dict|. *E917* {options} must be a Dictionary. It must not have a "callback" entry. It can have a "timeout" entry to specify the timeout @@ -540,8 +576,8 @@ ch_evalexpr({handle}, {expr} [, {options}]) *ch_evalexpr()* ch_evalexpr() waits for a response and returns the decoded expression. When there is an error or timeout it returns an - empty |String| or, when using the "lsp" channel mode, returns an - empty |Dict|. + empty |String| or, when using the "lsp" or "dap" channel mode, + returns an empty |Dict|. Note that while waiting for the response, Vim handles other messages. You need to make sure this doesn't cause trouble. @@ -622,7 +658,7 @@ ch_info({handle}) *ch_info()* "err_io" "out", "null", "pipe", "file" or "buffer" "err_timeout" timeout in msec "in_status" "open" or "closed" - "in_mode" "NL", "RAW", "JSON", "JS" or "LSP" + "in_mode" "NL", "RAW", "JSON", "JS" or "LSP" or "DAP" "in_io" "null", "pipe", "file" or "buffer" "in_timeout" timeout in msec @@ -631,6 +667,33 @@ ch_info({handle}) *ch_info()* < Return type: dict +ch_listen({address} [, {options}]) *E1573* *E1574* *ch_listen()* + Listen on {address} for incoming channel connections. + This creates a server-side channel, unlike |ch_open()| + which connects to an existing server. + Returns a Channel. Use |ch_status()| to check for failure. + + {address} is a String, see |channel-address| for the possible + accepted forms. Note: IPv6 is not yet supported. + + If {options} is given it must be a |Dictionary|. + See |channel-open-options|. + The "callback" in {options} is invoked when a new + connection is accepted. It receives two arguments: the + new Channel and the client address as a String (e.g. + "127.0.0.1:12345"). + + Use |ch_open()| to connect to an existing server instead. + + See |channel-listen-demo| for an example. + + Can also be used as a |method|: > + GetAddress()->ch_listen() +< + {only available when compiled with the |+channel| feature} + + Return type: channel + ch_log({msg} [, {handle}]) *ch_log()* Write String {msg} in the channel log file, if it was opened with |ch_logfile()|. @@ -685,6 +748,9 @@ ch_open({address} [, {options}]) *ch_open()* If {options} is given it must be a |Dictionary|. See |channel-open-options|. + Use |ch_listen()| to listen for incoming connections + instead. + Can also be used as a |method|: > GetAddress()->ch_open() < @@ -728,14 +794,15 @@ ch_sendexpr({handle}, {expr} [, {options}]) *ch_sendexpr()* with a raw channel. See |channel-use|. *E912* {handle} can be a Channel or a Job that has a Channel. - When using the "lsp" channel mode, {expr} must be a |Dict|. + When using the "lsp" or "dap" channel mode, {expr} must be a + |Dict|. - If the channel mode is "lsp", then returns a Dict. Otherwise - returns an empty String. If the "callback" item is present in - {options}, then the returned Dict contains the ID of the - request message. The ID can be used to send a cancellation - request to the LSP server (if needed). Returns an empty Dict - on error. + If the channel mode is "lsp" or "dap", then returns a Dict. + Otherwise returns an empty String. If the "callback" item is + present in {options}, then the returned Dict contains the ID + of the request message. The ID can be used to send a + cancellation request to the LSP server or debug adapter (if + needed). Returns an empty Dict on error. If a response message is not expected for {expr}, then don't specify the "callback" item in {options}. @@ -1583,8 +1650,8 @@ A LSP request message has the following format (expressed as a Vim Dict). The "params": } -A LSP response message has the following format (expressed as a Vim Dict). The -"result" and "error" fields are optional: > +A LSP response message has the following format (expressed as a Vim Dict). +The "result" and "error" fields are optional: > { "jsonrpc": "2.0", @@ -1602,5 +1669,33 @@ The "params" field is optional: > "params": } -< +============================================================================== +16. Debug Adapter Protocol *debug-adapter-protocol* + +The debug adapter protocol is very similar to the language server protocol, +with the main difference being that it does not use the JSON-RPC format. The +specification can be found here: + + https://microsoft.github.io/debug-adapter-protocol/specification + +The protocol uses the same header format as the LSP protocol. + +To encode and send a DAP request/notification message in a Vim |Dict| into a +JSON message and to receive and decode a DAP JSON response/notification +message into a Vim |Dict|, connect to the debug adapter with the +|channel-mode| set to "dap". + +For messages received on a channel with |channel-mode| set to "dap", Vim will +process the HTTP header and decode the JSON payload into a Vim |Dict| type. +When sending messages on a channel using the |ch_evalexpr()| or +|ch_sendexpr()| functions, Vim will add the HTTP header and encode the Vim +expression into JSON. + +Vim will automatically add the "seq" field to the JSON DAP message, and manage +the "request_seq" field as well for responses. However it will not add the +"type" field, it should be manually specified in the |Dict|. + +Otherwise the behaviour is the same as how Vim handles the "lsp" channel mode +|language-server-protocol|. + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/cmdline.txt b/runtime/doc/cmdline.txt index ede9a5ec..4a0729d0 100644 --- a/runtime/doc/cmdline.txt +++ b/runtime/doc/cmdline.txt @@ -1,7 +1,7 @@ -*cmdline.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*cmdline.txt* For Vim version 9.2. Last change: 2026 Mar 17 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *Cmdline-mode* *Command-line-mode* @@ -1101,7 +1101,7 @@ Note: these are typed literally, they are not special keys! It differs from in that is replaced with the script line number in any situation. *E961* *:* ** - is replaced with the {clinetid} of the last received + is replaced with the {clientid} of the last received message in |server2client()| *filename-modifiers* @@ -1381,10 +1381,10 @@ Example: > :au CmdwinLeave : let &cpt = b:cpt_save This sets 'complete' to use completion in the current window for |i_CTRL-N|. Another example: > - :au CmdwinEnter [/\?] startinsert + :au CmdwinEnter [\/\?] startinsert This will make Vim start in Insert mode in the command-line window. -Note: The "?" needs to be escaped, as this is a |file-pattern|. See also -|cmdline-autocompletion|. +Note: The "/" and "?" needs to be escaped, as this is a |file-pattern|. +See also |cmdline-autocompletion|. *cmdwin-char* The character used for the pattern indicates the type of command-line: diff --git a/runtime/doc/debug.txt b/runtime/doc/debug.txt index 4e75c174..17280db7 100644 --- a/runtime/doc/debug.txt +++ b/runtime/doc/debug.txt @@ -1,7 +1,7 @@ -*debug.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*debug.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Debugging Vim *debug-vim* diff --git a/runtime/doc/debugger.txt b/runtime/doc/debugger.txt index 164dfbf9..f14527d9 100644 --- a/runtime/doc/debugger.txt +++ b/runtime/doc/debugger.txt @@ -1,7 +1,7 @@ -*debugger.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*debugger.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Gordon Prieur + VIM REFERENCE MANUAL by Gordon Prieur Debugger Support Features *debugger-support* diff --git a/runtime/doc/develop.txt b/runtime/doc/develop.txt index 922da727..c2c9cb6e 100644 --- a/runtime/doc/develop.txt +++ b/runtime/doc/develop.txt @@ -1,7 +1,7 @@ -*develop.txt* For Vim version 9.1. Last change: 2025 Oct 09 +*develop.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Development of Vim. *development* @@ -153,7 +153,7 @@ VIM IS... NOT *design-not* everything but the kitchen sink, but some people say that you can clean one with it. ;-)" To use Vim with gdb see |terminal-debugger|. Other (older) tools can be - found at http://www.agide.org (link seems dead) and http://clewn.sf.net. + found at http://clewn.sf.net. - Vim is not a fancy GUI editor that tries to look nice at the cost of being less consistent over all platforms. But functional GUI features are welcomed. @@ -411,12 +411,12 @@ For any non-trivial change, please always create a pull request on github, since this triggers the test suite. A PR should ideally contain a single commit for a single logical change. -However, you can include several commits if you want to group multiple logical, -atomic changes in one PR. This can also make longer PRs easier to review. Be -sure to describe the reasoning for your changes in each commit message, as -this greatly helps with the review process. In cases where each commit -handles different logical changes, they will also be applied as separate -patches in Vim's repository. +However, you can include several commits if you want to group multiple +logical, atomic changes in one PR. This can also make longer PRs easier to +review. Be sure to describe the reasoning for your changes in each commit +message, as this greatly helps with the review process. In cases where each +commit handles different logical changes, they will also be applied as +separate patches in Vim's repository. *style-clang-format* sound.c and sign.c can be (semi-) automatically formatted using the diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt index 419373a8..c3383703 100644 --- a/runtime/doc/diff.txt +++ b/runtime/doc/diff.txt @@ -1,7 +1,7 @@ -*diff.txt* For Vim version 9.1. Last change: 2025 Oct 14 +*diff.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *diff* *vimdiff* *gvimdiff* *diff-mode* diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt index ac3ae71b..36b5bded 100644 --- a/runtime/doc/digraph.txt +++ b/runtime/doc/digraph.txt @@ -1,7 +1,7 @@ -*digraph.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*digraph.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Digraphs *digraph* *digraphs* *Digraphs* diff --git a/runtime/doc/doctags.c b/runtime/doc/doctags.c index 8822dcb9..8820aa56 100644 --- a/runtime/doc/doctags.c +++ b/runtime/doc/doctags.c @@ -9,7 +9,6 @@ #include #include -#include #include #define LINELEN 200 @@ -63,8 +62,8 @@ main(int argc, char **argv) // followed by a white character or end-of-line. if (p == p2 && (p1 == line || p1[-1] == ' ' || p1[-1] == '\t') - && (strchr(" \t\n\r", p[1]) != NULL - || p[1] == '\0')) + && (strchr(" \t\n\r", p[1]) != NULL + || p[1] == '\0')) { *p2 = '\0'; ++p1; diff --git a/runtime/doc/editing.txt b/runtime/doc/editing.txt index 6141dcec..c1fadf71 100644 --- a/runtime/doc/editing.txt +++ b/runtime/doc/editing.txt @@ -1,7 +1,7 @@ -*editing.txt* For Vim version 9.1. Last change: 2025 Oct 14 +*editing.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Editing files *edit-files* diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt index 9140ff23..a73055b0 100644 --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,7 +1,7 @@ -*eval.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*eval.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Expression evaluation *expression* *expr* *E15* *eval* @@ -38,6 +38,7 @@ a remark is given. 12. The sandbox |eval-sandbox| 13. Textlock |textlock| 14. Vim script library |vim-script-library| +15. Clipboard providers |clipboard-providers| Testing support is documented in |testing.txt|. Profiling is documented at |profiling|. @@ -466,7 +467,13 @@ Changing the order of items in a list: > :call reverse(list) " reverse the order of items :call uniq(sort(list)) " sort and remove duplicates - +In a Vim9 script or a def method, a new item can be appended to a List by +using the list length as the index: > + vim9script + var l: list + l[0] = 'a' + l[1] = 'b' +< For loop ~ The |:for| loop executes commands for each item in a List, Tuple, String or @@ -1348,7 +1355,13 @@ To compare Funcrefs to see if they refer to the same function, ignoring bound Dictionary and arguments, use |get()| to get the function name: > if get(Part1, 'name') == get(Part2, 'name') " Part1 and Part2 refer to the same function -< *E1037* +< + *E1437* +An |Object| can only be compared with another |Object|, using only the +"equal", "not equal", "is" and "isnot" operators |expr4|. An |enum| is also a +type of |Object|, and the same rules apply. + + *E1037* Using "is" or "isnot" with a |List|, |Tuple|, |Dictionary| or |Blob| checks whether the expressions are referring to the same |List|, |Tuple|, |Dictionary| or |Blob| instance. A copy of a |List| or |Tuple| is different @@ -2247,7 +2260,14 @@ v:clipmethod The current method of accessing the clipboard that is being x11 X11 selections are being used. none The above methods are unavailable or cannot be used. - See 'clipmethod' for more details. + If it is set to a value not in the above list, then a + clipboard provider with the given name is being used for the + clipboard functionality. See 'clipmethod' for more details. + + *v:clipproviders* +v:clipproviders + A dictionary containing clipboard providers, see + |clipboard-providers| for more information. *v:cmdarg* *cmdarg-variable* v:cmdarg This variable is used for two purposes: @@ -2381,8 +2401,8 @@ v:echospace Number of screen cells that can be used for an `:echo` message available above the last line. *v:errmsg* *errmsg-variable* -v:errmsg Last given error message. It's allowed to set this variable. - Example: > +v:errmsg Last error message that occurred (not necessarily displayed). + It's allowed to set this variable. Example: > :let v:errmsg = "" :silent! next :if v:errmsg != "" @@ -2787,9 +2807,9 @@ v:sizeoflong Number of bytes in a long. Depends on how Vim was compiled. expected result. *v:sizeofpointer* *sizeofpointer-variable* -v:sizeofpointer Number of bytes in a pointer. Depends on how Vim was compiled. - This is only useful for deciding whether a test will give the - expected result. +v:sizeofpointer Number of bytes in a pointer. Depends on how Vim was + compiled. This is only useful for deciding whether a test + will give the expected result. *v:stacktrace* *stacktrace-variable* v:stacktrace The stack trace of the exception most recently caught and @@ -2988,6 +3008,10 @@ v:versionlong Like v:version, but also including the patchlevel in the last v:vim_did_enter Zero until most of startup is done. It is set to one just before |VimEnter| autocommands are triggered. + *v:vim_did_init* *vim_did_init-variable* +v:vim_did_init Zero until initialization is done. It is set to one just + after |vimrc| is sourced and before |load-plugins|. + *v:warningmsg* *warningmsg-variable* v:warningmsg Last given warning message. It's allowed to set this variable. @@ -3694,19 +3718,22 @@ text... *:cat* *:catch* *E603* *E604* *E605* *E654* *E1033* -:cat[ch] /{pattern}/ The following commands until the next `:catch`, +:cat[ch] [/{pattern}/] The following commands until the next `:catch`, `:finally`, or `:endtry` that belongs to the same `:try` as the `:catch` are executed when an exception matching {pattern} is being thrown and has not yet been caught by a previous `:catch`. Otherwise, these commands are skipped. - When {pattern} is omitted all errors are caught. - Examples: > + Pattern can start with "Vim({cmd})" to indicate an + exception that occurred when executing the Ex command + {cmd}. When {pattern} is omitted all errors are + caught. Examples: > :catch /^Vim:Interrupt$/ " catch interrupts (CTRL-C) - :catch /^Vim\%((\a\+)\)\=:E/ " catch all Vim errors - :catch /^Vim\%((\a\+)\)\=:/ " catch errors and interrupts + :catch /^Vim\%((\S\+)\)\=:E/ " catch all Vim errors + :catch /^Vim\%((\S\+)\)\=:/ " catch errors and interrupts :catch /^Vim(write):/ " catch all errors in :write - :catch /^Vim\%((\a\+)\)\=:E123:/ " catch error E123 + :catch /^Vim(!):/ " catch all errors in :! + :catch /^Vim\%((\S\+)\)\=:E123:/ " catch error E123 :catch /my-exception/ " catch user exception :catch /.*/ " catch everything :catch " same as /.*/ @@ -3829,7 +3856,7 @@ text... when the screen is redrawn. *:echow* *:echowin* *:echowindow* -:[N]echow[indow] {expr1} .. +:[N]echow[indow] {expr1} ... Like |:echomsg| but when the messages popup window is available the message is displayed there. This means it will show for three seconds and avoid a @@ -5213,7 +5240,7 @@ $VIMRUNTIME/plugin/openPlugin.vim dist#vim9#Open(file: string) ~ Opens `path` with the system default handler (macOS `open`, Windows -`explorer.exe`, Linux `xdg-open`, …). If the variable |g:Openprg| exists the +`start`, Linux `xdg-open`, …). If the variable |g:Openprg| exists the string specified in the variable is used instead. The |:Open| user command uses file completion for its argument. @@ -5262,5 +5289,117 @@ Usage: >vim :call dist#vim9#Launch() :Launch . < - +============================================================================== +15. Clipboard providers *clipboard-providers* + +The clipboard provider feature allows the "+" |quoteplus| and "*" |quotestar| +registers to be overridden by custom Vim script functions. There can be +multiple providers, and Vim chooses which one to use based on 'clipmethod'. + +Despite the name, it should be treated separate from the clipboard +functionality. It essentially overrides the existing behaviour of the +clipboard registers. + + *clipboard-providers-clipboard* +The clipboard provider feature will respect the "unnamed" and "unnamedplus" +values in the 'clipboard' option. Any other value will be ignored. + + *clipboard-providers-no-clipboard* +If the |+clipboard| feature is not enabled, then the "+" and "*" registers +will not be enabled/available unless |v:clipmethod| is set to a provider. If +it is set to a provider, then the clipboard registers will be exposed despite +not having the |+clipboard| feature. + + *clipboard-providers-plus* +If on a platform that only has the "*" register, then the "+" register will +only be available when |v:clipmethod| is set to a provider. If you want to +check if the "+" is available for use, it can be checked with: > + if has('unnamedplus') +< + *clipboard-providers-clipmethod* +To integrate the providers with Vim's clipboard functionality, the +'clipmethod' option is used on all platforms. The names of clipboard +providers should be put inside the option, and if Vim chooses it, then it +overrides the "+" and "*" registers. Note that the "+" and "*" will not be +saved in the viminfo at all. + + *clipboard-providers-define* +To define a clipboard provider, the |v:clipproviders| vim variable is used. It +is a |dict| where each key is the clipboard provider name, and the value is +another |dict| declaring the "available", "copy", and "paste" callbacks: >vim + let v:clipproviders["myprovider"] = { + \ "available": function("Available"), + \ "paste": { + \ "+": function("Paste"), + \ "*": function("Paste") + \ }, + \ "copy": { + \ "+": function("Copy"), + \ "*": function("Copy") + \ } + \ } + set clipmethod^=myprovider +< +Each callback can either be a name of a function in a string, a |Funcref|, or +a |lambda| expression. + +With the exception of the "available" callback if a callback is not provided, +Vim will not invoke anything, and this is not an error. + + *clipboard-providers-textlock* +In both the "paste" and "copy" callbacks, it is not allowed to change the +buffer text, see |textlock|. + + *clipboard-providers-available* +The "available" callback is optional, does not take any arguments and should +return a |boolean| or non-zero number, which tells Vim if it is available +for use. If it is not, then Vim skips over it and tries the next 'clipmethod' +value. If the "available" callback is not provided, Vim assumes the provider +is always available for use (true). + + *clipboard-providers-paste* +The "paste" callback takes the following arguments in the following order: + 1. Name of the register being accessed, either "+" or "*". + +It should return a |list| or |tuple| containing the following elements in +order: + 1. Register type (and optional width) conforming to |setreg()|. If it + is an empty string, then the type is automatically chosen. + 2. A |list| of strings to return to Vim, each representing a line. + + *clipboard-providers-copy* +The "copy" callback returns nothing and takes the following arguments in the +following order: + 1. Name of the register being accessed, either "+" or "*". + 2. Register type conforming to |getregtype()| + 3. List of strings to use, each representing a line. + +Below is a sample script that makes use of the clipboard provider feature: >vim + func Available() + return v:true + endfunc + + func Copy(reg, type, str) + echom "Register: " .. a:reg + echom "Register type: " .. a:type + echom "Contents: " .. string(a:str) + endfunc + + func Paste(reg) + return ("b40", ["this", "is", "the", a:reg, "register!"]) + endfunc + + let v:clipproviders["test"] = { + \ "available": function("Available"), + \ "copy": { + \ "+": function("Copy"), + \ "*": function("Copy") + \ }, + \ "paste": { + \ "+": function("Paste"), + \ "*": function("Paste") + \ } + \ } + set clipmethod^=test +< vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/evim-ja.UTF-8.1 b/runtime/doc/evim-ja.UTF-8.1 index 1a035272..8bfefbca 100644 --- a/runtime/doc/evim-ja.UTF-8.1 +++ b/runtime/doc/evim-ja.UTF-8.1 @@ -1,4 +1,4 @@ -.TH EVIM 1 "2002 February 16" +.TH EVIM 1 "2024 August 12" .SH 名前 evim \- easy Vim, モードレスエディタ Vim .SH 書式 @@ -34,8 +34,13 @@ CTRL-X が切り取り、CTRL-C がコピー、CTRL-V がペーストです。 vim(1) を参照してください。 .SH ファイル .TP 15 -/usr/local/lib/vim/evim.vim +/usr/local/share/vim/vim??/evim.vim eVim の初期化スクリプト。 +.br +.I vim?? +は短いバージョン番号で +.B Vim 9.1 +では vim91 です。 .SH 別名 evim は "gumbies のための Vim" とも呼ばれています。 evim を使っているあなたはきっと、頭にハンカチをかぶっているのです。 diff --git a/runtime/doc/evim-sv.1 b/runtime/doc/evim-sv.1 new file mode 100644 index 00000000..4d1579cb --- /dev/null +++ b/runtime/doc/evim-sv.1 @@ -0,0 +1,55 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH EVIM 1 "12 augusti 2024" +.SH NAMN +evim enkel Vim, redigera en fil med Vim och konfigurera fr lgesls +redigering +.SH SYNOPSIS +.br +\fBevim\fP [flaggor] [fil ..] +.br +\fBeview\fP +.SH BESKRIVNING +\fBeVim\fP startar \fBVim\fP och stller in flaggor s att det fungerar som en +lgesls redigerare. Det r fortfarande Vim, men anvnds som en +pek\-och\-klicka\-redigerare. Det knns ungefr som att anvnda Notepad i +MS\-Windows. \fBeVim\fP krs alltid i grafiskt grnssnitt, fr att mjliggra +anvndning av menyer och verktygsflt. +.PP +Endast fr personer som verkligen inte kan arbeta med Vim p normalt +stt. Redigeringen blir mycket mindre effektiv. +.PP +\fBeview\fP r detsamma, men startar i skrivskyddat lge. Det fungerar precis +som evim \-R. +.PP +Se vim(1) fr mer information om Vim, flaggor etc. +.PP +Flaggan "insertmode" r instllt s att man kan skriva text direkt. +.br +Mappningar r instllda s att kopiera och klistra in fungerar med +MS\-Windows\-tangenterna. CTRL\-X klipper ut text, CTRL\-C kopierar text och +CTRL\-V klistrar in text. Anvnd CTRL\-Q fr att f den ursprungliga +funktionen fr CTRL\-V. +.SH FLAGGOR +Se vim(1). +.SH FILER +.TP 15 +/usr/local/share/vim/vim??/evim.vim +Skriptet som lses in fr att initialisera eVim. +.br +\fIvim??\fP r ett kort versionsnummer, till exempel vim91 fr \fBVim 9.1\fP +.SH AKA +ven knt som "Vim fr gumbies". Nr du anvnder evim frvntas du ta en +nsduk, gra en knut i varje hrn och bra den p huvudet. +.SH "SE VEN" +vim(1) +.SH UPPHOVSPERSON +Det mesta av \fBVim\fP en har skapats av Bram Moolenaar, med stor hjlp frn +andra. Se menyn Hjlp/Tack till. +.SH SVENSK VERSTTNING +Vim versattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt sjlva Vim. +Om du hittar fel i versttningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/evim-sv.UTF-8.1 b/runtime/doc/evim-sv.UTF-8.1 new file mode 100644 index 00000000..f862aa7b --- /dev/null +++ b/runtime/doc/evim-sv.UTF-8.1 @@ -0,0 +1,55 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH EVIM 1 "12 augusti 2024" +.SH NAMN +evim enkel Vim, redigera en fil med Vim och konfigurera för lägeslös +redigering +.SH SYNOPSIS +.br +\fBevim\fP [flaggor] [fil ..] +.br +\fBeview\fP +.SH BESKRIVNING +\fBeVim\fP startar \fBVim\fP och ställer in flaggor så att det fungerar som en +lägeslös redigerare. Det är fortfarande Vim, men används som en +pek\-och\-klicka\-redigerare. Det känns ungefär som att använda Notepad i +MS\-Windows. \fBeVim\fP körs alltid i grafiskt gränssnitt, för att möjliggöra +användning av menyer och verktygsfält. +.PP +Endast för personer som verkligen inte kan arbeta med Vim på normalt +sätt. Redigeringen blir mycket mindre effektiv. +.PP +\fBeview\fP är detsamma, men startar i skrivskyddat läge. Det fungerar precis +som evim \-R. +.PP +Se vim(1) för mer information om Vim, flaggor etc. +.PP +Flaggan "insertmode" är inställt så att man kan skriva text direkt. +.br +Mappningar är inställda så att kopiera och klistra in fungerar med +MS\-Windows\-tangenterna. CTRL\-X klipper ut text, CTRL\-C kopierar text och +CTRL\-V klistrar in text. Använd CTRL\-Q för att få den ursprungliga +funktionen för CTRL\-V. +.SH FLAGGOR +Se vim(1). +.SH FILER +.TP 15 +/usr/local/share/vim/vim??/evim.vim +Skriptet som läses in för att initialisera eVim. +.br +\fIvim??\fP är ett kort versionsnummer, till exempel vim91 för \fBVim 9.1\fP +.SH AKA +Även känt som "Vim för gumbies". När du använder evim förväntas du ta en +näsduk, göra en knut i varje hörn och bära den på huvudet. +.SH "SE ÄVEN" +vim(1) +.SH UPPHOVSPERSON +Det mesta av \fBVim\fP en har skapats av Bram Moolenaar, med stor hjälp från +andra. Se menyn Hjälp/Tack till. +.SH SVENSK ÖVERSÄTTNING +Vim översattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt själva Vim. +Om du hittar fel i översättningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/farsi.txt b/runtime/doc/farsi.txt index f4474038..7e87a428 100644 --- a/runtime/doc/farsi.txt +++ b/runtime/doc/farsi.txt @@ -1,7 +1,7 @@ -*farsi.txt* For Vim version 9.1. Last change: 2019 May 05 +*farsi.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Mortaza Ghassab Shiran + VIM REFERENCE MANUAL by Mortaza Ghassab Shiran Right to Left and Farsi Mapping for Vim *farsi* *Farsi* diff --git a/runtime/doc/filetype.txt b/runtime/doc/filetype.txt index b363b112..8dbe4e68 100644 --- a/runtime/doc/filetype.txt +++ b/runtime/doc/filetype.txt @@ -1,7 +1,7 @@ -*filetype.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*filetype.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Filetypes *filetype* *file-type* @@ -138,6 +138,7 @@ what kind of file it is. This doesn't always work. A number of global variables can be used to overrule the filetype used for certain extensions: file name variable ~ + *.app g:filetype_app *.asa g:filetype_asa |ft-aspperl-syntax| |ft-aspvbs-syntax| *.asm g:asmsyntax |ft-asm-syntax| diff --git a/runtime/doc/fold.txt b/runtime/doc/fold.txt index 40cff059..1e729f98 100644 --- a/runtime/doc/fold.txt +++ b/runtime/doc/fold.txt @@ -1,7 +1,7 @@ -*fold.txt* For Vim version 9.1. Last change: 2025 Oct 03 +*fold.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Folding *Folding* *folding* *folds* diff --git a/runtime/doc/ft_ada.txt b/runtime/doc/ft_ada.txt index 866857e8..35ab8c8e 100644 --- a/runtime/doc/ft_ada.txt +++ b/runtime/doc/ft_ada.txt @@ -1,4 +1,4 @@ -*ft_ada.txt* For Vim version 9.1. Last change: 2025 Aug 06 +*ft_ada.txt* For Vim version 9.2. Last change: 2026 Feb 14 ADA FILE TYPE PLUG-INS REFERENCE MANUAL~ diff --git a/runtime/doc/ft_context.txt b/runtime/doc/ft_context.txt index fa831645..e659d171 100644 --- a/runtime/doc/ft_context.txt +++ b/runtime/doc/ft_context.txt @@ -1,8 +1,8 @@ -*ft_context.txt* For Vim version 9.1. Last change: 2024 Jan 01 +*ft_context.txt* For Vim version 9.2. Last change: 2026 Feb 14 This is the documentation for the ConTeXt filetype plugin. -NOTE: the plugin requires +vim9script. +NOTE: the plugin requires |+vim9script|. ============================================================================== CONTENTS *context.vim* *ft-context* @@ -19,11 +19,11 @@ Introduction ~ ConTeXt, similarly to LaTeX, is a macro-based typesetting system built on TeX: > https://wiki.contextgarden.net - https://wiki.contextgarden.net/Vim + https://wiki.contextgarden.net/Input_and_compilation/Text_editors/Vim < The ConTeXt plugin provides syntax highlighting, completion and support for typesetting ConTeXt documents. The recommended way to typeset a document is to -use |:ConTeXt|. This will invoke the `mtxrun` script that is found in `$PATH`. +use |:ConTeXt|, which invokes the `mtxrun` script that is found in $PATH. For more fine grained control over the command and its environment, `context.Typeset()` can be used directly (or `context#Typeset()` from legacy @@ -32,26 +32,31 @@ Vim script). For instance, if a version of ConTeXt is installed in > import autoload 'context.vim' + var os = "linux" # Update to match your system + var arch = "arm64" # Update to match your system + def MyConTeXt() - const env = {'PATH': - printf("%s/context/tex/texmf--/bin:%s", $HOME, $PATH)} - context.Typeset("%", env) + var env = { + 'PATH': $'{$HOME}/context/tex/texmf-{os}-{arch}/bin:{$PATH}' + } + context.Typeset("%", env) enddef -This code may go in `~/.vim/after/ftplugin/context.vim`. A mapping can then be -defined to invoke the custom command: -> nnoremap t MyConTeXt() < +This code should go in `~/.vim/after/ftplugin/context.vim`. + `context.Typeset()` accepts a third optional argument to specify a custom typesetting command. That must be a function that takes a path and returns the -command as a List. For example: +command as a |list|. For example: > def ConTeXtCustomCommand(path: string): list return ['mtxrun', '--script', 'context', '--nonstopmode', path] enddef - context.ConTeXtTypeset("%", v:none, ConTeXtCustomCommand) + def MyContext() + context.Typeset("%", v:none, ConTeXtCustomCommand) + enddef < Large projects are often organized as a root document and various chapter files. When editing a chapter file, it is convenient to invoke |:ConTeXt| @@ -67,7 +72,7 @@ one in the current buffer. The root document does not have to be opened in Vim. To extend completion and syntax highlighting, you may generate supporting -files using ConTeXt and add them to your configuration. If you configuration +files using ConTeXt and add them to your configuration. If your configuration resides in `~/.vim`, you may use these commands: > mkdir -p ~/.vim/syntax/shared @@ -81,7 +86,8 @@ The last command will create the following syntax files: - `context-data-metafun.vim`; - `context-data-tex.vim`. -The same command can be used to update those syntax files. +If present, such files will be automatically loaded to enhance syntax +highlighting. The same command can be used to update those syntax files. *ft-context-commands* Commands ~ @@ -109,8 +115,9 @@ and this option is not set, standard `make` is used. If this option is set, > g:context_ignore_makefile = 0 < -NOTE: before using |:make|, set the working directory of the buffer to the -directory of the file to be typeset. +NOTE: before using |:make|, ensure that the working directory of the buffer is +set to the directory of the file you want to typeset. Additionally, be aware +that |:make| searches for `mtxrun` in $PATH. *'g:context_extra_options'* A list of additional options to pass to `mtxrun`. @@ -135,11 +142,11 @@ When set, do not define any mappings. *ft-context-mappings* Mappings ~ -tp "reflow TeX paragraph". +tp "reflow TeX paragraph" (motion). -i$ "inside inline math block". +i$ "inside inline math block" (text object selection). -a$ "around inline math block". +a$ "around inline math block" (text object selection). ]] [count] start of sections forward. diff --git a/runtime/doc/ft_hare.txt b/runtime/doc/ft_hare.txt index ce344b73..918ff2a5 100644 --- a/runtime/doc/ft_hare.txt +++ b/runtime/doc/ft_hare.txt @@ -19,23 +19,33 @@ functionality for the Hare programming language. FILETYPE PLUGIN *ft-hare-plugin* This plugin has a few different variables that can be defined inside your -|vimrc| to tweak its behavior. +|vimrc| to adjust its behavior. -Additionally, support is provided for folding `{ }` blocks. To enable folding, -add the following to a file inside your |after-directory| (e.g. + *hare-folding* +This plugin supports folding `{ }` blocks. To enable folding, add the +following to a file inside your |after-directory| (e.g. ~/.vim/after/ftplugin/hare.vim): > setlocal foldmethod=syntax -Because block-based folding tends to create many small folds, consider setting -a few related options, such as 'foldminlines' and 'foldnestmax'. +Because syntax-based folding tends to create many small folds, consider +setting a few related options, such as 'foldminlines' or 'foldnestmax'. + *hare-symbol-operators* +Most symbolic operators do not receive any highlighting by default (with the +exception of "?", "!", and "::"). If you prefer highlighting all operators, +you can link them to your preferred highlight group inside your |vimrc|. For +example: > + + hi def link hareCast hareSymbolOperator + hi def link hareSymbolOperator hareOperator +< *g:hare_recommended_style* The following options are set by default, in accordance with Hare's official style guide: > setlocal noexpandtab - setlocal shiftwidth=0 + setlocal shiftwidth=8 setlocal softtabstop=0 setlocal tabstop=8 setlocal textwidth=80 @@ -43,18 +53,11 @@ style guide: > To disable this behavior, add the following to your |vimrc|: > let g:hare_recommended_style = 0 -< - *g:hare_symbol_operators* -By default, symbolic operators do not receive any special highlighting (with -`!`, `?`, and `::` being the only exceptions). To enable syntax highlighting -for most other operators, add the following to your |vimrc|: > - - let g:hare_symbol_operators = 1 < *g:hare_space_error* -By default, trailing whitespace and spaces followed by characters will -be highlighted as errors. This is automatically disabled in Insert mode. To -turn off this highlighting completely, add the following to your |vimrc|: > +By default, trailing whitespace and spaces followed by characters are +highlighted as errors. This is automatically disabled while in insert mode. +To turn off this highlighting completely, add the following to your |vimrc|: > let g:hare_space_error = 0 @@ -67,28 +70,27 @@ this is such a common filename, this plugin only searches for Hare source files within the same directory by default. *g:filetype_haredoc* -The |g:filetype_haredoc| variable can be used to tweak the depth of this +The `g:filetype_haredoc` variable can be used to tweak the depth of this search, or bypass the detection of Hare documentation files altogether: Value Effect~ - 0 No automatic detection + 0 Search disabled 1 Search current directory only (this is the default) 2 Search one level of subdirectories - 3 Search two levels of subdirectories -The search depth may be any positive integer, but values higher than `2` are -unlikely to provide a tangible benefit in most situations. +The search depth may be any positive integer, but values greater than 2 are +very unlikely to provide any tangible benefit and can impact performance. INDENTATION SETTINGS *ft-hare-indent* -Unlike most other settings for this plugin, the indentation settings may also -be set per-buffer, overriding any global configuration that exists. To do -this, simply prefix the variable with |b:| instead of |g:|. +Unlike other settings, indentation settings may be configured on a per-buffer +basis, overriding any existing global configuration. To do so, simply prefix +the variable with |b:| instead of |g:|. - *g:hare_indent_match_switch* -By default, continuation lines for "match" and "switch" conditions are -indented only one level: >hare + *g:hare_indent_match_switch* *b:hare_indent_match_switch* +By default, the continuation lines for "match" and "switch" conditions are +only indented one level: >hare const file = match (os::create(path, 0o644, flag::WRONLY | flag::TRUNC)) { @@ -96,39 +98,33 @@ indented only one level: >hare yield file; // ... -If you instead prefer indenting them two levels, to more closely resemble "if" -and "for" conditions, add the following line to your |vimrc|: > +If you prefer indenting them two levels, more closely resembling "if" and +"for" conditions, add the following line to your |vimrc|: > let g:hare_indent_match_switch = 2 < - *g:hare_indent_case* -By default, continuation lines for cases in "match" and "switch" expressions -are indented two levels, to visually distinguish them from the body of the -case: >hare + *g:hare_indent_case* *b:hare_indent_case* +By default, the continuation lines for "match" and "switch" cases are indented +two levels, to visually distinguish them from the case body: >hare case ltok::I8, ltok::I16, ltok::I32, ltok::I64, ltok::INT => // ... -If you prefer a different amount of indentation, you can adjust it using -|g:hare_indent_case|. Valid values include `0`, `1`, and `2`. +If you prefer a different level of indentation, you can adjust it using +`g:hare_indent_case`. The possible values are 0, 1, and 2. COMPILER SUPPORT *compiler-hare* -If this plugin detects a Makefile in the current directory, it will assume you -wish to use `make` for your build system, and will leave 'makeprg' untouched. -Otherwise, `hare build` will be used. - - *g:hare_makeprg_params* -When `hare build` is used, additional compiler options may be appended to -'makeprg' with the |g:hare_makeprg_params| variable. It may also be set on a -per-buffer basis (using |b:| instead of |g:|), overriding any global -configuration that exists. For example: > - - let b:hare_makeprg_params = '-lc -t o' +If a Makefile is detected in the current directory, this plugin will assume +you are using "make" for your build system, and will leave 'makeprg' as-is. +Otherwise, "hare build" will be used. -The global default is "-q", to suppress writing to stdout while building. + *g:hare_makeprg_params* +When using "hare build", additional compiler options may be appended to +'makeprg' using `g:hare_makeprg_params`. The default is "-q", to suppress +printing to stdout when building. ============================================================================== vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/ft_mp.txt b/runtime/doc/ft_mp.txt index 11ddd3b7..7106edf9 100644 --- a/runtime/doc/ft_mp.txt +++ b/runtime/doc/ft_mp.txt @@ -1,10 +1,10 @@ -*ft_mp.txt* For Vim version 9.1. Last change: 2022 Aug 12 +*ft_mp.txt* For Vim version 9.2. Last change: 2026 Feb 14 This is the documentation for the METAFONT and MetaPost filetype plugins. Unless otherwise specified, the commands, settings and mappings defined below apply equally to both filetypes. -NOTE: the plugin requires +vim9script. +NOTE: the plugin requires |+vim9script|. ============================================================================== CONTENTS *mp.vim* *ft-metapost* @@ -38,25 +38,25 @@ next line should not change from whatever it has been manually set. For example, this is the default indentation of a simple macro: > - def foo = - makepen( - subpath(T-n,t) of r - shifted .5down - --subpath(t,T) of r shifted .5up -- cycle - ) - withcolor black - enddef + def foo = + makepen( + subpath(T-n,t) of r + shifted .5down + --subpath(t,T) of r shifted .5up -- cycle + ) + withcolor black + enddef < By adding the special comments, the indentation can be adjusted arbitrarily: > - def foo = - makepen( - subpath(T-n,t) of r %> - shifted .5down %> - --subpath(t,T) of r shifted .5up -- cycle %<<< - ) - withcolor black - enddef + def foo = + makepen( + subpath(T-n,t) of r %> + shifted .5down %> + --subpath(t,T) of r shifted .5up -- cycle %<<< + ) + withcolor black + enddef < *ft-metapost-commands* Commands ~ diff --git a/runtime/doc/ft_rust.txt b/runtime/doc/ft_rust.txt index 4f4e3a85..dd934e18 100644 --- a/runtime/doc/ft_rust.txt +++ b/runtime/doc/ft_rust.txt @@ -60,8 +60,8 @@ g:rust_conceal_pub~ *g:rust_recommended_style* g:rust_recommended_style~ Set this option to enable vim indentation and textwidth settings to - conform to style conventions of the rust standard library (i.e. use 4 - spaces for indents and sets 'textwidth' to 99). This option is enabled + conform to style conventions of the Rust style guide (i.e. use 4 + spaces for indents and set 'textwidth' to 100). This option is enabled by default. To disable it: > let g:rust_recommended_style = 0 < @@ -166,6 +166,13 @@ g:rustfmt_detect_version~ Disabled by default for performance reasons > let g:rustfmt_detect_version = 1 +< + *g:rustfmt_find_toml* +g:rustfmt_find_toml~ + When set to 1, will try to find `rustfmt.toml` file by searching from + current path upwards. Disabled by default for performance reasons +> + let g:rustfmt_find_toml = 1 < *g:rust_playpen_url* g:rust_playpen_url~ diff --git a/runtime/doc/ft_sql.txt b/runtime/doc/ft_sql.txt index 22706c12..2baa3641 100644 --- a/runtime/doc/ft_sql.txt +++ b/runtime/doc/ft_sql.txt @@ -1,4 +1,4 @@ -*ft_sql.txt* For Vim version 9.1. Last change: 2025 Aug 10 +*ft_sql.txt* For Vim version 9.2. Last change: 2026 Feb 14 by David Fishburn diff --git a/runtime/doc/gui.txt b/runtime/doc/gui.txt index d69d603e..a255af48 100644 --- a/runtime/doc/gui.txt +++ b/runtime/doc/gui.txt @@ -1,7 +1,7 @@ -*gui.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*gui.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Vim's Graphical User Interface *gui* *GUI* diff --git a/runtime/doc/gui_w32.txt b/runtime/doc/gui_w32.txt index 1c33ff69..2e2e2601 100644 --- a/runtime/doc/gui_w32.txt +++ b/runtime/doc/gui_w32.txt @@ -1,7 +1,7 @@ -*gui_w32.txt* For Vim version 9.1. Last change: 2025 Oct 11 +*gui_w32.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Vim's Win32 Graphical User Interface *gui-w32* *win32-gui* @@ -425,8 +425,8 @@ simulating the keystrokes Alt, F. > This maps Alt-Space to pop down the system menu for the Vim window. Note that ~ is used by simalt to represent the character. > :map :simalt ~n -Maps Control-N to produce the keys Alt-Space followed by N. This minimizes the -Vim window via the system menu. +Maps Control-N to produce the keys Alt-Space followed by N. This minimizes +the Vim window via the system menu. Note that the key changes depending on the language you are using. @@ -504,4 +504,26 @@ To use the system's default title bar colors, set highlighting groups to hi TitleBar guibg=NONE guifg=NONE hi TitleBarNC guibg=NONE guifg=NONE < + +Full Screen *gui-w32-fullscreen* + +To enable fullscreen mode in the Windows GUI version of Vim, add the 's' flag +to the 'guioptions' setting. + +For convenience, you can define a command or mapping to toggle fullscreen +mode: +> + command ToggleFullscreen { + if &guioptions =~# 's' + set guioptions-=s + else + set guioptions+=s + endif + } + + map &go =~# 's' ? ":se go-=s" : ":se go+=s" + +The fullscreen mode will occupy the entire screen area while hiding window +decorations such as the title bar and borders. + vim:tw=78:sw=4:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/gui_x11.txt b/runtime/doc/gui_x11.txt index a479c7cc..fce4fb47 100644 --- a/runtime/doc/gui_x11.txt +++ b/runtime/doc/gui_x11.txt @@ -1,7 +1,7 @@ -*gui_x11.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*gui_x11.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Vim's Graphical User Interface *gui-x11* *GUI-X11* diff --git a/runtime/doc/hangulin.txt b/runtime/doc/hangulin.txt index 3f37d8eb..be5798ad 100644 --- a/runtime/doc/hangulin.txt +++ b/runtime/doc/hangulin.txt @@ -1,7 +1,8 @@ -*hangulin.txt* For Vim version 9.1. Last change: 2019 Nov 21 +*hangulin.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam + VIM REFERENCE MANUAL by Chi-Deok Hwang and Sung-Hyun Nam + *hangul* Vim had built-in support for hangul, the Korean language, for users without diff --git a/runtime/doc/hebrew.txt b/runtime/doc/hebrew.txt index 64b9c60b..9640a146 100644 --- a/runtime/doc/hebrew.txt +++ b/runtime/doc/hebrew.txt @@ -1,7 +1,7 @@ -*hebrew.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*hebrew.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Ron Aaron and Avner Lottem + VIM REFERENCE MANUAL by Ron Aaron and Avner Lottem Hebrew Language support (options & mapping) for Vim *hebrew* diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt index e8f15c73..b8f9e8dc 100644 --- a/runtime/doc/help.txt +++ b/runtime/doc/help.txt @@ -1,4 +1,4 @@ -*help.txt* For Vim version 9.1. Last change: 2025 Jun 27 +*help.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM - main help file k @@ -44,7 +44,7 @@ BASIC: |quickref| Overview of the most common commands you will use |tutor| 30-minute interactive course for beginners |copying| About copyrights -|iccf| Helping poor children in Uganda +|Kuwasha| Helping poor children in Uganda |sponsor| Sponsor Vim development, become a registered Vim user |www| Vim on the World Wide Web |bugs| Where to send bug reports diff --git a/runtime/doc/helphelp.txt b/runtime/doc/helphelp.txt index d10cb2c1..7ef2ff00 100644 --- a/runtime/doc/helphelp.txt +++ b/runtime/doc/helphelp.txt @@ -1,7 +1,7 @@ -*helphelp.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*helphelp.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Help on help files *helphelp* @@ -158,11 +158,12 @@ 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). + +If you want to open help on {subject} in the current window, the helpcurwin +optional package can be used. See |package-helpcurwin|. + *help-buffer-options* When the help buffer is created, several local options are set to make sure the help text is displayed as it was intended: @@ -325,6 +326,7 @@ At this moment translations are available for: Japanese - multiple authors Polish - translated by Mikolaj Machowski Russian - translated by Vassily Ragosin + Swedish - translated by Daniel Nylander See the Vim website to find them: http://www.vim.org/translations.php A set of translated help files consists of these files: @@ -417,8 +419,9 @@ STYLE If your Vim has 'modeline' enabled, Vim should follow the preferred style automatically when editing built-in help files. -Vim help files should be formatted for a 'textwidth' of 78 characters, so they -look good in a typical 80 x 24 terminal window. +Vim help files should be formatted for a 'textwidth' of 78 characters (with +'conceal' enabled), so they look good in a typical 80 x 24 terminal window; +use `:set colorcolumn=+0` as a visual guide. Use two spaces between the final dot of a sentence of the first letter of the next sentence. Like this. diff --git a/runtime/doc/howto.txt b/runtime/doc/howto.txt index 2d8c8b5c..3df22065 100644 --- a/runtime/doc/howto.txt +++ b/runtime/doc/howto.txt @@ -1,7 +1,7 @@ -*howto.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*howto.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar How to ... *howdoi* *how-do-i* *howto* *how-to* diff --git a/runtime/doc/if_cscop.txt b/runtime/doc/if_cscop.txt index e96a04ec..e3968366 100644 --- a/runtime/doc/if_cscop.txt +++ b/runtime/doc/if_cscop.txt @@ -1,7 +1,8 @@ -*if_cscop.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*if_cscop.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Andy Kahn + VIM REFERENCE MANUAL by Andy Kahn + *cscope* *Cscope* This document explains how to use Vim's cscope interface. diff --git a/runtime/doc/if_lua.txt b/runtime/doc/if_lua.txt index f0d77cff..cd8fdce3 100644 --- a/runtime/doc/if_lua.txt +++ b/runtime/doc/if_lua.txt @@ -1,7 +1,7 @@ -*if_lua.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*if_lua.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Luis Carvalho + VIM REFERENCE MANUAL by Luis Carvalho The Lua Interface to Vim *lua* *Lua* diff --git a/runtime/doc/if_mzsch.txt b/runtime/doc/if_mzsch.txt index d76816db..3f38bae7 100644 --- a/runtime/doc/if_mzsch.txt +++ b/runtime/doc/if_mzsch.txt @@ -1,7 +1,7 @@ -*if_mzsch.txt* For Vim version 9.1. Last change: 2025 Oct 14 +*if_mzsch.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Sergey Khorev + VIM REFERENCE MANUAL by Sergey Khorev The MzScheme Interface to Vim *mzscheme* *MzScheme* diff --git a/runtime/doc/if_ole.txt b/runtime/doc/if_ole.txt index c546e971..289dd1ae 100644 --- a/runtime/doc/if_ole.txt +++ b/runtime/doc/if_ole.txt @@ -1,7 +1,7 @@ -*if_ole.txt* For Vim version 9.1. Last change: 2023 Nov 19 +*if_ole.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Paul Moore + VIM REFERENCE MANUAL by Paul Moore The OLE Interface to Vim *ole-interface* diff --git a/runtime/doc/if_perl.txt b/runtime/doc/if_perl.txt index 616c3b31..d4692ff3 100644 --- a/runtime/doc/if_perl.txt +++ b/runtime/doc/if_perl.txt @@ -1,9 +1,10 @@ -*if_perl.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*if_perl.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Sven Verdoolaege + VIM REFERENCE MANUAL by Sven Verdoolaege and Matt Gerassimof + Perl and Vim *perl* *Perl* 1. Editing Perl files |perl-editing| diff --git a/runtime/doc/if_pyth.txt b/runtime/doc/if_pyth.txt index 0402e2cb..321b3777 100644 --- a/runtime/doc/if_pyth.txt +++ b/runtime/doc/if_pyth.txt @@ -1,7 +1,7 @@ -*if_pyth.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*if_pyth.txt* For Vim version 9.2. Last change: 2026 Mar 18 - VIM REFERENCE MANUAL by Paul Moore + VIM REFERENCE MANUAL by Paul Moore The Python Interface to Vim *python* *Python* @@ -183,9 +183,11 @@ vim.eval(str) *python-eval* Evaluates the expression str using the vim internal expression evaluator (see |expression|). Returns the expression result as: - a string if the Vim expression evaluates to a string or number - - a list if the Vim expression evaluates to a Vim list - - a tuple if the Vim expression evaluates to a Vim tuple - - a dictionary if the Vim expression evaluates to a Vim dictionary + - a list if the Vim expression evaluates to a Vim |list| + - a tuple if the Vim expression evaluates to a Vim |tuple| + - a dictionary if the Vim expression evaluates to a Vim |dict| + - a boolean if Vim expression evaluates to |v:true| or |v:false| + - `None` if Vim expression evaluates to |v:null| or |v:none| Dictionaries, lists and tuples are recursively expanded. Examples: > :" value of the 'textwidth' option diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt index c024b48e..475c5f5e 100644 --- a/runtime/doc/if_ruby.txt +++ b/runtime/doc/if_ruby.txt @@ -1,7 +1,8 @@ -*if_ruby.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*if_ruby.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Shugo Maeda + VIM REFERENCE MANUAL by Shugo Maeda + The Ruby Interface to Vim *ruby* *Ruby* diff --git a/runtime/doc/if_sniff.txt b/runtime/doc/if_sniff.txt index ff587ad2..9cc7b265 100644 --- a/runtime/doc/if_sniff.txt +++ b/runtime/doc/if_sniff.txt @@ -1,7 +1,7 @@ -*if_sniff.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*if_sniff.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Anton Leherbauer + VIM REFERENCE MANUAL by Anton Leherbauer The SNiFF+ support was removed at patch 7.4.1433. If you want to check it out diff --git a/runtime/doc/if_tcl.txt b/runtime/doc/if_tcl.txt index a5c09829..c3710c6f 100644 --- a/runtime/doc/if_tcl.txt +++ b/runtime/doc/if_tcl.txt @@ -1,7 +1,7 @@ -*if_tcl.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*if_tcl.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Ingo Wilken + VIM REFERENCE MANUAL by Ingo Wilken The Tcl Interface to Vim *tcl* *Tcl* *TCL* diff --git a/runtime/doc/indent.txt b/runtime/doc/indent.txt index afd39546..6059e3f5 100644 --- a/runtime/doc/indent.txt +++ b/runtime/doc/indent.txt @@ -1,7 +1,7 @@ -*indent.txt* For Vim version 9.1. Last change: 2025 Oct 14 +*indent.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar This file is about indenting C programs and other files. diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt index 2966a630..310da6fa 100644 --- a/runtime/doc/index.txt +++ b/runtime/doc/index.txt @@ -1,7 +1,8 @@ -*index.txt* For Vim version 9.1. Last change: 2025 Aug 06 +*index.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar + *index* This file contains a list of all commands for each mode, with a tag and a @@ -169,7 +170,7 @@ commands in CTRL-X submode *i_CTRL-X_index* |i_CTRL-X_CTRL-Y| CTRL-X CTRL-Y scroll down |i_CTRL-X_CTRL-U| CTRL-X CTRL-U complete with 'completefunc' |i_CTRL-X_CTRL-V| CTRL-X CTRL-V complete like in : command line -|i_CTRL-X_CTRL-Z| CTRL-X CTRL-Z stop completion, keeping the text as-is +|i_CTRL-X_CTRL-Z| CTRL-X CTRL-Z stop completion, text is unchanged |i_CTRL-X_CTRL-]| CTRL-X CTRL-] complete tags |i_CTRL-X_s| CTRL-X s spelling suggestions @@ -807,7 +808,8 @@ tag char note action in Normal mode ~ |g@| g@{motion} call 'operatorfunc' |g~| g~{motion} 2 swap case for Nmove text |g| g 1 same as "gj" -|g| g 1 same as "g$" +|g| g 1 same as "g$" but go to the rightmost + non-blank character instead |g| g 1 same as "g0" |g| g same as g same as diff --git a/runtime/doc/insert.txt b/runtime/doc/insert.txt index b0bd39a2..68a6c647 100644 --- a/runtime/doc/insert.txt +++ b/runtime/doc/insert.txt @@ -1,7 +1,7 @@ -*insert.txt* For Vim version 9.1. Last change: 2025 Oct 17 +*insert.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *Insert* *Insert-mode* @@ -1720,7 +1720,7 @@ Complete: Notes - It doesn't complete command arguments that rely on 'shellcmd' completion - type in Windows and WSL due to general slowness of canditate gathering, + type in Windows and WSL due to general slowness of candidate gathering, e.g. > terminal dir diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt index 46aa9428..f26d49d7 100644 --- a/runtime/doc/intro.txt +++ b/runtime/doc/intro.txt @@ -1,7 +1,7 @@ -*intro.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*intro.txt* For Vim version 9.2. Last change: 2026 Mar 08 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Introduction to Vim *ref* *reference* @@ -275,7 +275,7 @@ Vim would never have become what it is now, without the help of these people! improvements Doug Kearns Runtime file maintainer Foxe Chen Wayland support, new features - glepnir completion feature + glepnir work on improving completion feature, fixes Girish Palya autocompletion (ins/cmdline), omnifunc composing, search/subst completion, and more. Hirohito Higashi lots of patches and fixes @@ -313,11 +313,11 @@ Elvis Another Vi clone, made by Steve Kirkendall. Very compact but isn't as flexible as Vim. Development has stalled, Elvis has left the building! Source code is freely available. *Neovim* -Neovim A Vim clone. Forked the Vim source in 2014 and went a different way. - Very much bound to github and has many more dependencies, making - development more complex and limiting portability. Code has been - refactored, resulting in patches not being exchangeable with Vim. - Supports a remote GUI and integration with scripting languages. +Neovim A fork of Vim from 2014 that went a different way. Very much bound + to GitHub and has many more dependencies, making development more + complex and limiting portability. Code has been refactored, resulting + in patches not being exchangeable with Vim. Supports remote UIs and + first-class Lua scripting. ============================================================================== 4. Notation *notation* @@ -450,6 +450,8 @@ notation meaning equivalent decimal value(s) ~ delete 127 command sequence intro ALT-Esc 155 ** CSI when typed in the GUI ** + operating system command 157 ** + received OSC response ** end-of-line (can be , or , depends on system and 'fileformat') ** diff --git a/runtime/doc/map.txt b/runtime/doc/map.txt index 98ac3e11..118e2d44 100644 --- a/runtime/doc/map.txt +++ b/runtime/doc/map.txt @@ -1,7 +1,7 @@ -*map.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*map.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Key mapping, abbreviations and user-defined commands. @@ -1659,7 +1659,9 @@ completion can be enabled: -complete=scriptnames sourced script names -complete=shellcmd Shell command -complete=shellcmdline First is a shell command and subsequent ones - are filenames. The same behavior as |:!cmd| + are filenames. The same behavior as |:!cmd|. + To get correct completion, |:command-nargs| + should be '*' or '+' -complete=sign |:sign| suboptions -complete=syntax syntax file names 'syntax' -complete=syntime |:syntime| suboptions @@ -1695,7 +1697,8 @@ candidates as a Vim List. Non-string items in the list are ignored. The function arguments are: ArgLead the leading portion of the argument currently being - completed on + completed on; note that this only captures the current + space-separated word, even when using "-nargs=1" CmdLine the entire command line CursorPos the cursor position in it (byte index) The function may use these for determining context. For the "custom" @@ -1753,7 +1756,7 @@ by default correspond to the current line, last line and the whole buffer, relate to arguments, (loaded) buffers, windows or tab pages. Possible values are (second column is the short name used in listing): - -addr=lines Range of lines (this is the default for -range) + -addr=lines Range of lines (the default for -range) -addr=arguments arg Range for arguments -addr=buffers buf Range for buffers (also not loaded buffers) -addr=loaded_buffers load Range for loaded buffers @@ -1761,8 +1764,7 @@ Possible values are (second column is the short name used in listing): -addr=tabs tab Range for tab pages -addr=quickfix qf Range for quickfix entries -addr=other ? Other kind of range; can use ".", "$" and "%" - as with "lines" (this is the default for - -count) + as with "lines" (the default for -count) Special cases ~ diff --git a/runtime/doc/mbyte.txt b/runtime/doc/mbyte.txt index ea545874..c8312b7f 100644 --- a/runtime/doc/mbyte.txt +++ b/runtime/doc/mbyte.txt @@ -1,7 +1,7 @@ -*mbyte.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*mbyte.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar et al. + VIM REFERENCE MANUAL by Bram Moolenaar et al. Multi-byte support *multibyte* *multi-byte* @@ -455,8 +455,8 @@ Useful utilities for converting the charset: ftp://ftp.cuhk.hk/pub/chinese/ifcss/software/unix/convert/hc-30.tar.gz Korean: hmconv - Hmconv is Korean code conversion utility especially for E-mail. It can - convert between EUC-KR and ISO-2022-KR. Hmconv can be found at: + Hmconv is Korean code conversion utility especially for E-mail. It + can convert between EUC-KR and ISO-2022-KR. Hmconv can be found at: https://www.freshports.org/korean/hmconv/ Multilingual: lv @@ -601,7 +601,7 @@ Each field means: - AVE: AVERAGE_WIDTH field. Ten times average width in pixels. - CR: CHARSET_REGISTRY field. The name of the charset group. - CE: CHARSET_ENCODING field. The rest of the charset name. For some - charsets, such as JIS X 0208, if this field is 0, code points has + charsets, such as JIS X 0208, if this field is 0, codepoints has the same value as GL, and GR if 1. For example, in case of a 16 dots font corresponding to JIS X 0208, it is @@ -761,9 +761,9 @@ Then add a command to your |gvimrc| file to set 'guifont': > X INPUT METHOD (XIM) BACKGROUND *XIM* *xim* *x-input-method* -XIM is an international input module for X. There are two kinds of structures, -Xlib unit type and |IM-server| (Input-Method server) type. |IM-server| type -is suitable for complex input, such as CJK. +XIM is an international input module for X. There are two kinds of +structures, Xlib unit type and |IM-server| (Input-Method server) type. +|IM-server| type is suitable for complex input, such as CJK. - IM-server *IM-server* @@ -997,8 +997,8 @@ recommended to test with an alternative one. For proper integration with Vim's |+multi_byte_ime| system, changes in the input method's status must be detectable by the `ImmGetOpenStatus()` function -in Vims source code. Currently, some input methods that support multi-language -input may have internal state changes that gVim cannot capture. +in Vim's source code. Currently, some input methods that support +multi-language input may have internal state changes that gVim cannot capture. Cursor color when IME or XIM is on *CursorIM* diff --git a/runtime/doc/message.txt b/runtime/doc/message.txt index 33b8fbdf..6a39e3f0 100644 --- a/runtime/doc/message.txt +++ b/runtime/doc/message.txt @@ -1,7 +1,7 @@ -*message.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*message.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar This file contains an alphabetical list of messages and error messages that @@ -644,6 +644,22 @@ Set the 'autoread' option if you want to do this automatically. This message is not given when 'buftype' is not empty. Also see the |FileChangedShell| autocommand. +You will be given a dialog with the following options: + +"OK": Dismiss the warning and continue editing. No changes are + loaded, the buffer remains as it is. + +"Load File": Reload the file from disk, replacing the current buffer + contents. Any changes you made in Vim that haven't been saved + will be lost. + +"Load File and Options": + Reload the file from disk and, in addition, apply relevant + file settings, such as indentation, syntax highlighting, text + width, and other filetype-specific options. This ensures the + buffer matches the file's intended configuration according to + your current settings and autocommands. + There is one situation where you get this message even though there is nothing wrong: If you save a file in Windows on the day the daylight saving time starts. It can be fixed in one of these ways: @@ -832,6 +848,8 @@ and the screen is about to be redrawn: like pressing . This makes it impossible to select text though. -> For the GUI clicking the left mouse button in the last line works like pressing . +-> |q| won't start recording into a register (rationale: it is often used as + "quit" prompt key by users) If you accidentally hit or and you want to see the displayed text then use |g<|. This only works when 'more' is set. diff --git a/runtime/doc/mlang.txt b/runtime/doc/mlang.txt index e98e15e1..6f0bb3fe 100644 --- a/runtime/doc/mlang.txt +++ b/runtime/doc/mlang.txt @@ -1,7 +1,7 @@ -*mlang.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*mlang.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Multi-language features *multilang* *multi-lang* diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt index e0c9d8ba..600ce647 100644 --- a/runtime/doc/motion.txt +++ b/runtime/doc/motion.txt @@ -1,7 +1,7 @@ -*motion.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*motion.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Cursor motions *cursor-motions* *navigation* @@ -429,8 +429,10 @@ These commands move over words or WORDS. *word* A word consists of a sequence of letters, digits and underscores, or a sequence of other non-blank characters, separated with white space (spaces, -tabs, ). This can be changed with the 'iskeyword' option. An empty line -is also considered to be a word. +tabs, ). This can be changed with the 'iskeyword' option. For +characters above 255, a word ends when the Unicode character class changes +(e.g., between letters, subscripts, emojis, etc). An empty line is also +considered to be a word. *WORD* A WORD consists of a sequence of non-blank characters, separated with white space. An empty line is also considered to be a WORD. diff --git a/runtime/doc/netbeans.txt b/runtime/doc/netbeans.txt index 87130261..d56d31fe 100644 --- a/runtime/doc/netbeans.txt +++ b/runtime/doc/netbeans.txt @@ -1,7 +1,7 @@ -*netbeans.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*netbeans.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Gordon Prieur et al. + VIM REFERENCE MANUAL by Gordon Prieur et al. *netbeans* *NetBeans* *netbeans-support* @@ -48,7 +48,7 @@ VimIntegration, description of various projects doing Vim Integration: Projects using the NetBeans protocol of Vim are or were: - Agide, an IDE for the AAP project, written in Python (now replaced by - |:Termdebug|): http://www.a-a-p.org + |:Termdebug|): http://www.a-a-p.org (link now dead) - Clewn, a gdb integration into Vim, written in C: http://clewn.sourceforge.net/ - Pyclewn, a gdb integration into Vim, written in Python: @@ -262,8 +262,8 @@ connection has been established. The communication between the Vim Controller and Vim uses plain text messages. This protocol was first designed to work with the external editor module of NetBeans. Later it was extended to work with Agide (A-A-P GUI IDE, -see http://www.a-a-p.org) and then with other IDE. The extensions are marked -with "version 2.1". +formerly http://www.a-a-p.org, link now dead) and then with other IDE. +The extensions are marked with "version 2.1". Version 2.2 of the protocol has several minor changes which should only affect NetBeans users (ie, not Agide users). However, a bug was fixed which could @@ -390,7 +390,8 @@ addAnno serNum typeNum off len typeNum number sequence number of the annotation defined with defineAnnoType for this buffer - off number offset where annotation is to be placed + off number offset where annotation is to be + placed len number not used In version 2.1 "lnum/col" can be used instead of "off". @@ -645,7 +646,8 @@ getMark Not implemented. getAnno serNum Return the line number of the annotation in the buffer. Argument: - serNum serial number of this placed annotation + serNum serial number of this placed + annotation The reply is: 123 lnum line number of the annotation 123 0 invalid annotation serial number diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt index 6bd79fb0..bddfa992 100644 --- a/runtime/doc/options.txt +++ b/runtime/doc/options.txt @@ -1,7 +1,7 @@ -*options.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*options.txt* For Vim version 9.2. Last change: 2026 Mar 16 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Options *options* @@ -1025,8 +1025,9 @@ A jump table for the options with a short description can be found at |Q_op|. *'autowriteall'* *'awa'* *'noautowriteall'* *'noawa'* 'autowriteall' 'awa' boolean (default off) global - Like 'autowrite', but also used for commands ":edit", ":enew", ":quit", - ":qall", ":exit", ":xit", ":recover" and closing the Vim window. + Like 'autowrite', but also used for commands ":edit", ":enew", + ":quit", ":qall", ":exit", ":xit", ":recover" and closing the Vim + window. Setting this option also implies that Vim behaves like 'autowrite' has been set. @@ -1670,7 +1671,8 @@ A jump table for the options with a short description can be found at |Q_op|. a modified version of the following command in your vimrc file to override it: > :let &cdpath = ',' .. substitute(substitute($CDPATH, '[, ]', '\\\0', 'g'), ':', ',', 'g') -< This option cannot be set from a |modeline| or in the |sandbox|, for +< Environment variables are expanded |:set_env|. + This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. (parts of 'cdpath' can be passed to the shell to expand file names). @@ -1814,13 +1816,19 @@ A jump table for the options with a short description can be found at |Q_op|. for X-windows, "" otherwise) global {only in GUI versions or when the |+xterm_clipboard| - or |+wayland_clipboard| features are included} + or |+wayland_clipboard| features or + |+clipboard_provider| features are included} This option is a list of comma-separated names. Note: if one of the items is "exclude:", then you can't add an item after that. Therefore do not append an item with += but use ^= to prepend, e.g.: > set clipboard^=unnamed < When using the GUI see |'go-A'|. + When using the |clipboard-providers| feature, only the "unnamed" and + "unnamedplus" features will be recognized If compiled without the + |+clipboard| feature but compiled with the |+clipboard_provider| + feature, then they will be the only values allowed and the other + values will be invalid. These names are recognized: *clipboard-unnamed* @@ -1842,11 +1850,10 @@ A jump table for the options with a short description can be found at |Q_op|. option, yank operations (but not delete, change or put) will additionally copy the text into register '*'. If Wayland is being used and the compositor does - not support the primary-selection-unstable-v1 - protocol, then the regular selection is used in its - place. Only available with the |+X11| or - |+wayland_clipboard| feature. Availability can be - checked with: > + not support the primary selection then the regular + selection is used in its place. Only available with + the |+X11| or |+wayland_clipboard| feature. + Availability can be checked with: > if has('unnamedplus') < *clipboard-autoselect* @@ -1911,18 +1918,22 @@ A jump table for the options with a short description can be found at |Q_op|. for VMS: "x11", otherwise: "") global - {only when the |+xterm_clipboard| or - |+wayland_clipboard| features are included} - Specifies which method of accessing the system clipboard is used, - depending on which method works first or is available. Supported - methods are: + {only when the |+xterm_clipboard|, |+wayland_clipboard|, + or |+eval| features are included} + Specifies which method of accessing the system clipboard (or clipboard + provider) is used. Methods are tried in the order given; the first + working method is used. Supported methods are: wayland Wayland selections x11 X11 selections + Use a clipboard provider with the given name Note: This option is ignored when either the GUI is running or if Vim is run on a system without Wayland or X11 support, such as Windows or - macOS. The GUI or system way of accessing the clipboard is always - used instead. + macOS. The GUI or system way of accessing the clipboard is used + instead, meaning |v:clipmethod| will be set to "none". The + exception to this is the |clipboard-providers| feature, in which if + a clipboard provider is being used, then it will override the existing + clipboard functionality. The option value is a list of comma separated items. The list is parsed left to right in order, and the first method that Vim @@ -1991,8 +2002,6 @@ A jump table for the options with a short description can be found at |Q_op|. *'commentstring'* *'cms'* *E537* 'commentstring' 'cms' string (default "/* %s */") local to buffer - {not available when compiled without the |+folding| - feature} A template for a comment. The "%s" in the value is replaced with the comment text, and should be padded with a space when possible. Currently used to add markers for folding, see |fold-marker|. Also @@ -2212,11 +2221,13 @@ A jump table for the options with a short description can be found at |Q_op|. *'completefuzzycollect'* *'cfc'* 'completefuzzycollect' 'cfc' string (default: empty) global - A comma-separated list of strings to enable fuzzy collection for - specific |ins-completion| modes, affecting how matches are gathered - during completion. For specified modes, fuzzy matching is used to - find completion candidates instead of the standard prefix-based - matching. This option can contain the following values: + DEPRECATED: This option is no longer used; changing it has no effect. + When 'completeopt' contains "fuzzy", Vim will internally use the + equivalent of: + "keyword,files,whole_line" + + The values below are kept for compatibility and for scripts that + may read this option: keyword keywords in the current file |i_CTRL-X_CTRL-N| keywords with flags ".", "w", |i_CTRL-N| |i_CTRL-P| @@ -2227,10 +2238,6 @@ A jump table for the options with a short description can be found at |Q_op|. whole_line whole lines |i_CTRL-X_CTRL-L| - When using the 'completeopt' "longest" option value, fuzzy collection - can identify the longest common string among the best fuzzy matches - and insert it automatically. - *'completeitemalign'* *'cia'* 'completeitemalign' 'cia' string (default: "abbr,kind,menu") global @@ -2250,16 +2257,13 @@ A jump table for the options with a short description can be found at |Q_op|. fuzzy Enable |fuzzy-matching| for completion candidates. This allows for more flexible and intuitive matching, where characters can be skipped and matches can be found even - if the exact sequence is not typed. Note: This option - does not affect the collection of candidate list, it only - controls how completion candidates are reduced from the - list of alternatives. If you want to use |fuzzy-matching| - to gather more alternatives for your candidate list, - see 'completefuzzycollect'. + if the exact sequence is not typed (disabled for thesaurus + completion |compl-thesaurus|). longest When 'autocomplete' is not active, only the longest common - prefix of the matches is inserted. If the popup menu is + prefix of the matches is inserted (disabled for thesaurus + completion |compl-thesaurus|). If the popup menu is displayed, you can use CTRL-L to add more characters. Whether case is ignored depends on the type of completion. For buffer text the 'ignorecase' option applies. @@ -2570,8 +2574,9 @@ A jump table for the options with a short description can be found at |Q_op|. This makes "y0" fail in the first column. *cpo-f* f When included, a ":read" command with a file name - argument will set the file name for the current buffer, - if the current buffer doesn't have a file name yet. + argument will set the file name for the current + buffer, if the current buffer doesn't have a file name + yet. *cpo-F* F When included, a ":write" command with a file name argument will set the file name for the current @@ -3066,6 +3071,7 @@ A jump table for the options with a short description can be found at |Q_op|. To include a comma in a file name precede it with a backslash. Spaces after a comma are ignored, otherwise spaces are included in the file name. See |option-backslash| about using backslashes. + Environment variables are expanded |:set_env|. This has nothing to do with the |Dictionary| variable type. Where to find a list of words? - On FreeBSD, there is the file "/usr/share/dict/words". @@ -3171,8 +3177,8 @@ A jump table for the options with a short description can be found at |Q_op|. hiddenoff Do not use diff mode for a buffer when it becomes hidden. - iblank Ignore changes where lines are all blank. Adds - the "-B" flag to the "diff" command if + iblank Ignore changes where lines are all blank. + Adds the "-B" flag to the "diff" command if 'diffexpr' is empty. Check the documentation of the "diff" command for what this does exactly. @@ -3204,14 +3210,18 @@ A jump table for the options with a short description can be found at |Q_op|. difference. Non-alphanumeric multi-byte characters such as emoji and CJK characters are considered - individual words. + individual words. Small gaps of + non-word characters (5 bytes or less) + between changes are merged into a + single highlight block. internal Use the internal diff library. This is ignored when 'diffexpr' is set. *E960* When running out of memory when writing a - buffer this item will be ignored for diffs - involving that buffer. Set the 'verbose' - option to see when this happens. + buffer or the diff is larger than 1 GB this + item will be ignored for diffs involving that + buffer. Set the 'verbose' option to see when + this happens. iwhite Ignore changes in amount of white space. Adds the "-b" flag to the "diff" command if @@ -3588,6 +3598,7 @@ A jump table for the options with a short description can be found at |Q_op|. |SafeState|, |SafeStateAgain|, |SessionLoadPost|, + |SessionLoadPre|, |SessionWritePost|, |ShellCmdPost|, |SigUSR1|, @@ -3801,9 +3812,9 @@ A jump table for the options with a short description can be found at |Q_op|. edit a file, a check is done for the : 1. If all lines end in , and 'fileformats' includes "dos", 'fileformat' is set to "dos". - 2. If a is found and 'fileformats' includes "unix", 'fileformat' - is set to "unix". Note that when a is found without a - preceding , "unix" is preferred over "dos". + 2. If a is found and 'fileformats' includes "unix", + 'fileformat' is set to "unix". Note that when a is found + without a preceding , "unix" is preferred over "dos". 3. If 'fileformat' has not yet been set, and if a is found, and if 'fileformats' includes "mac", 'fileformat' is set to "mac". This means that "mac" is only chosen when: @@ -4271,15 +4282,17 @@ A jump table for the options with a short description can be found at |Q_op|. *'fsync'* *'fs'* *'nofsync'* *'nofs'* 'fsync' 'fs' boolean (default on) - global + global or local to buffer |global-local| When on, the library function fsync() will be called after writing a file. This will flush a file to disk, ensuring that it is safely written even on filesystems which do metadata-only journaling. This - will force the harddrive to spin up on Linux systems running in laptop - mode, so it may be undesirable in some situations. Be warned that - turning this off increases the chances of data loss after a crash. On - systems without an fsync() implementation, this variable is always - off. + will force the hard drive to spin up on Linux systems running in + laptop mode, so it may be undesirable in some situations. Be warned + that turning this off increases the chances of data loss after a + crash. On systems without an fsync() implementation, this variable is + always off. + This is a |global-local| option, so it can be set per buffer, for + example when writing to a slow filesystem. Also see 'swapsync' for controlling fsync() on swap files. 'fsync' also applies to |writefile()| (unless a flag is used to overrule it) and when writing undo files (see |undo-persistence|). @@ -4510,8 +4523,8 @@ A jump table for the options with a short description can be found at |Q_op|. by a yank or delete operation for the "* register. The same applies to the modeless selection. *'go-P'* - 'P' Like autoselect but using the "+ register instead of the "* - register. + 'P' Like autoselect but only copy to the "+ register instead of + the "* register. *'go-A'* 'A' Autoselect for the modeless selection. Like 'a', but only applies to the modeless selection. @@ -4529,17 +4542,17 @@ A jump table for the options with a short description can be found at |Q_op|. choices. *'go-C'* 'C' Use |hl-TitleBar| and |hl-TitleBarNC| if available. - Currently only works for MS-Window GUI. + Currently only works for MS-Windows GUI. See |gui-w32-title-bar| for details. *'go-d'* 'd' Use dark theme variant if available. Currently only works for - GTK+ GUI. + MS-Windows and GTK+ GUI. *'go-e'* 'e' Add tab pages when indicated with 'showtabline'. 'guitablabel' can be used to change the text in the labels. When 'e' is missing a non-GUI tab pages line may be used. - The GUI tabs are only supported on some systems, currently GTK, - Motif, Mac OS/X, Haiku, and MS-Windows. + The GUI tabs are only supported on some systems, currently + GTK, Motif, Mac OS/X, Haiku, and MS-Windows. *'go-f'* 'f' Foreground: Don't use fork() to detach the GUI from the shell where it was started. Use this for programs that wait for the @@ -4569,6 +4582,12 @@ A jump table for the options with a short description can be found at |Q_op|. *'go-T'* 'T' Include Toolbar. Currently only in Win32, GTK+, Motif and Photon GUIs. + *'go-s'* + 's' Enable fullscreen mode. Currently only supported in the + MS-Windows GUI version. When set, the window will occupy the + entire screen and remove window decorations. Define custom + mappings to toggle this mode conveniently. For detailed usage + instructions, see |gui-w32-fullscreen|. *'go-r'* 'r' Right-hand scrollbar is always present. *'go-R'* @@ -4794,6 +4813,9 @@ A jump table for the options with a short description can be found at |Q_op|. |hl-PmenuBorder| j popup menu border characters |hl-PmenuShadow| H popup menu shadow |hl-PreInsert| I text inserted when "preinsert" is in 'completeopt' + |hl-Normal| ( Window color (supersedes 'wincolor' option) + + Note that the "(" occasion is not set by default. The display modes are: r reverse (termcap entry "mr" and "me") @@ -5124,10 +5146,9 @@ A jump table for the options with a short description can be found at |Q_op|. {not available when compiled without the |+extra_search| features} While typing a search command, show where the pattern, as it was typed - so far, matches (ignoring {offset} and {address} modifiers). The - matched string is highlighted. If the pattern is invalid or not - found, nothing is shown. The screen will be updated often, this is - only useful on fast terminals. + so far, matches. The matched string is highlighted. If the pattern + is invalid or not found, nothing is shown. The screen will be updated + often, this is only useful on fast terminals. Also applies to the pattern in commands: > :global :lvimgrep @@ -5237,23 +5258,6 @@ A jump table for the options with a short description can be found at |Q_op|. and there is a letter before it, the completed part is made uppercase. With 'noinfercase' the match is used as-is. - *'isexpand'* *'ise'* -'isexpand' 'ise' string (default: "") - local to buffer - Defines characters and patterns for completion in insert mode. Used - by the |complete_match()| function to determine the starting position - for completion. This is a comma-separated list of triggers. Each - trigger can be: - - A single character like "." or "/" - - A sequence of characters like "->", "/*", or "/**" - - Note: Use "\\," to add a literal comma as trigger character, see - |option-backslash|. - - Examples: > - set isexpand=.,->,/*,\\, -< - *'insertmode'* *'im'* *'noinsertmode'* *'noim'* 'insertmode' 'im' boolean (default off) global @@ -5359,7 +5363,13 @@ A jump table for the options with a short description can be found at |Q_op|. "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 (any character - that is not white space or punctuation). + that is categorized as a letter, number or emoji according to the + Unicode general category). + + Note that there is a difference between the "\k" character class and + the |word| motion. The former matches any word character, while the + latter stops at a change of the character class. + 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 @@ -5804,6 +5814,15 @@ A jump table for the options with a short description can be found at |Q_op|. ---+---+--XXX ~ Where "XXX" denotes the first non-blank characters in the line. + *lcs-leadtab* + leadtab:xy[z] + Like |lcs-tab|, but only for leading tabs. When + omitted, the "tab" setting is used for leading tabs. + |lcs-tab| must also be set for this to work. *E1572* + You can combine it with "tab:", for example: > + :set listchars=tab:>-,leadtab:.\ +< This shows leading tabs as periods(.) and other tabs + as ">--". *lcs-trail* trail:c Character to show for trailing spaces. When omitted, trailing spaces are blank. Overrides the "space" and @@ -5903,8 +5922,8 @@ A jump table for the options with a short description can be found at |Q_op|. *'makeencoding'* *'menc'* 'makeencoding' 'menc' string (default "") global or local to buffer |global-local| - Encoding used for reading the output of external commands. When empty, - encoding is not converted. + Encoding used for reading the output of external commands. When + empty, encoding is not converted. This is used for `:make`, `:lmake`, `:grep`, `:lgrep`, `:grepadd`, `:lgrepadd`, `:cfile`, `:cgetfile`, `:caddfile`, `:lfile`, `:lgetfile`, and `:laddfile`. @@ -6048,7 +6067,8 @@ A jump table for the options with a short description can be found at |Q_op|. When the number of matches exceeds this value, Vim shows ">" instead of the exact count to keep searching fast. Note: larger values may impact performance. - The value must be between 1 and 9999. + The value must be between 1 and 9999. See also the |searchcount()| + function. *'menuitems'* *'mis'* 'menuitems' 'mis' number (default 25) @@ -6119,7 +6139,7 @@ A jump table for the options with a short description can be found at |Q_op|. :set mkspellmem=900000,3000,800 < If you have less than 512 Mbyte |:mkspell| may fail for some languages, no matter what you set 'mkspellmem' to. - + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -6211,8 +6231,8 @@ A jump table for the options with a short description can be found at |Q_op|. < If your terminal can't overrule the mouse events going to the application, use: > :set mouse=nvi -< Then you can press ":", select text for the system, and press Esc to go - back to Vim using the mouse events. +< Then you can press ":", select text for the system, and press Esc to + go back to Vim using the mouse events. In |defaults.vim| "nvi" is used if the 'term' option is not matching "xterm". @@ -6542,6 +6562,7 @@ A jump table for the options with a short description can be found at |Q_op|. *'packpath'* *'pp'* 'packpath' 'pp' string (default: see 'runtimepath') Directories used to find packages. See |packages|. + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -6978,6 +6999,9 @@ A jump table for the options with a short description can be found at |Q_op|. |lambda| or a |Funcref|. See |option-value-function| for more information. + It is not allowed to change text or jump to another window while + evaluating 'qftf' |textlock|. + This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -7332,7 +7356,7 @@ A jump table for the options with a short description can be found at |Q_op|. For $XDG_CONFIG_HOME see |xdg-base-dir|. The defaults for most systems are setup to search five locations: - 1. In your home directory, for your personal preferences. + 1. In your $MYVIMDIR directory, for your personal preferences. 2. In a system-wide Vim directory, for preferences from the system administrator. 3. In $VIMRUNTIME, for files distributed with Vim. @@ -7340,7 +7364,7 @@ A jump table for the options with a short description can be found at |Q_op|. 4. In the "after" directory in the system-wide Vim directory. This is for the system administrator to overrule or add to the distributed defaults (rarely needed) - 5. In the "after" directory in your home directory. This is for + 5. In the "after" directory in your $MYVIMDIR directory. This is for personal preferences to overrule or add to the distributed defaults or system-wide settings (rarely needed). @@ -7366,6 +7390,7 @@ A jump table for the options with a short description can be found at |Q_op|. runtime files. When Vim is started with |--clean| the home directory entries are not included. + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -7397,6 +7422,8 @@ A jump table for the options with a short description can be found at |Q_op|. 'scrollfocus' 'scf' boolean (default off) global {only for MS-Windows GUI} + NOTE: This option is currently not functional. It may be fixed or + removed in a future version. When using the scroll wheel and this option is set, the window under the mouse pointer is scrolled. With this option off the current window is scrolled. @@ -7867,7 +7894,8 @@ A jump table for the options with a short description can be found at |Q_op|. "search hit TOP, continuing at BOTTOM" messages are only indicated by a "W" (Mnemonic: Wrapped) letter before the search count statistics. The maximum limit can be set with - the 'maxsearchcount' option. + the 'maxsearchcount' option, see also |searchcount()| + function. This gives you the opportunity to avoid that a change between buffers requires you to hit , but still gives as useful a message as @@ -8144,7 +8172,7 @@ A jump table for the options with a short description can be found at |Q_op|. when it is turned off. It is also reset when 'compatible' is set. The 'L' flag in 'cpoptions' alters tab behavior when 'list' is - enabled. See also |ins-expandtab| ans user manual section |30.5| for + enabled. See also |ins-expandtab| and user manual section |30.5| for in-depth explanations. If Vim is compiled with the |+vartabs| feature then the value of @@ -8198,6 +8226,7 @@ A jump table for the options with a short description can be found at |Q_op|. name if you want to. However, it will then only be used when 'spellfile' is set to it, for entries in 'spelllang' only files without region name will be found. + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -8325,7 +8354,7 @@ A jump table for the options with a short description can be found at |Q_op|. Only one of "best", "double" or "fast" may be used. The others may appear several times in any order. Example: > :set sps=file:~/.vim/sugg,best,expr:MySuggest() -< +< Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -8500,10 +8529,14 @@ A jump table for the options with a short description can be found at |Q_op|. highlighting is used, also for the statusline of non-current windows. * - Set highlight group to User{N}, where {N} is taken from the - minwid field, e.g. %1*. Restore normal highlight with %* or %0*. - The difference between User{N} and StatusLine will be applied to - StatusLineNC for the statusline of non-current windows. + minwid field, e.g. %1*. Restore normal highlight with %* or + %0*. The difference between User{N} and StatusLine will be + applied to StatusLineNC for the statusline of non-current + windows. The number N must be between 1 and 9. See |hl-User1..9| + *stl-%@* + @ - Inserts a newline. This only takes effect when the "maxheight" + value of 'statuslineopt' is greater than 1, or for |tabpanel|. When displaying a flag, Vim removes the leading comma, if any, when that flag comes right after plaintext. This will make a nice display @@ -8561,6 +8594,51 @@ A jump table for the options with a short description can be found at |Q_op|. :function VarExists(var, val) : if exists(a:var) | return a:val | else | return '' | endif :endfunction +< + *'statuslineopt'* *'stlo'* +'statuslineopt' 'stlo' string (default "") + global or local to window |global-local| + {not available when compiled without the |+statusline| + feature} + Optional settings for |status-line|. It can consist of the following + items. All are optional. Items must be separated by a comma. + + fixedheight Fix the status line height to "maxheight". + Without this, the height varies from 1 to + "maxheight" based on the number of newline + |stl-%@| in 'statusline'. + + maxheight:{n} Set the maximum status line height to {n}. + {n} must be 1 or greater. If not specified, the + height is 1. + When {n} is 2 or more, you can use newline + |stl-%@| in 'statusline' to display information on + multiple lines. + + If {n} cannot be set due to insufficient window + height or other constraints, a best-effort + approach will be taken to set the closest possible + value that does not exceed {n}. No error will be + shown even if the setting cannot be changed. + + For the global value, a value applicable to all + windows on all tab pages is used. For a + window-local value, a value applicable to that + window is used. + Note: When the applied value differs from {n}, the + option is updated to reflect it. + Example of updated options: >vim + :set statuslineopt=maxheight:999,fixedheight + " Only 20 lines could be applied, so + " maxheight is updated to 20. + :set statuslineopt? + statuslineopt=maxheight:20,fixedheight +< + Examples: > + :set statuslineopt=fixedheight + :set stlo= + :set stlo=maxheight:2,fixedheight + :set stlo-=fixedheight < *'suffixes'* *'su'* 'suffixes' 'su' string (default ".bak,~,.o,.h,.info,.swp,.obj") @@ -8747,11 +8825,11 @@ A jump table for the options with a short description can be found at |Q_op|. You can use |g:actual_curtabpage| within a function assigned to tabpanel. |g:actual_curtabpage| represents current tab's label number. - The option value can contain line breaks: > + You can use "%@" or "\n" to insert a newline: > set tabpanel=%!TabPanel() function! TabPanel() abort - return printf("(%2d)\n %%f", g:actual_curtabpage) + return "(" .. g:actual_curtabpage .. ")%@ %f" endfunction < The result is: @@ -8765,6 +8843,9 @@ A jump table for the options with a short description can be found at |Q_op|. | | | | < + Note: using "\n" is considered experimental and deprecated, prefer + the |stl-%@| atom instead. + *'tabpanelopt'* *'tplo'* 'tabpanelopt' 'tplo' string (default "") global @@ -9035,6 +9116,39 @@ A jump table for the options with a short description can be found at |Q_op|. < NOTE: This option is reset when 'compatible' is set. + *'termresize'* *'trz'* +'termresize' 'trz' string (default "") + global + {only available in Unix, does not work in the GUI} + Determines the method to use for detecting window resize events, + possible values are: + "sigwinch": Use the SIGWINCH signal. + "inband": Receive resize events from the terminal via escape + sequences (recommended if supported by terminal). + "": Automatically choose depending on terminal. + + The SIGWINCH handler is always available. If set to "inband" and the + terminal does not support in-band window resize events, then the + SIGWINCH handler will be used instead as a fallback. If set to "" + (empty option), then "inband" will be used if Vim detects that the + terminal supports it, otherwise "sigwinch". + + + *'termsync'* *'tsy'* +'termsync' 'tsy' boolean (default off) + global + If the host terminal supports it, buffer all screen updates made + during a redraw cycle so that each screen is displayed in the terminal + all at once. This can prevent tearing or flickering when the terminal + updates faster than Vim can redraw. If the host terminal does not + support it or if Vim is running graphically, then this option does + nothing. + + The specification can be found at: + https://github.com/contour-terminal/vt-extensions/blob/master/synchronized-output.md + + The terminal codes used are |t_BS| and |t_ES|. + *'termwinkey'* *'twk'* 'termwinkey' 'twk' string (default "") local to window @@ -9103,8 +9217,8 @@ A jump table for the options with a short description can be found at |Q_op|. |ConPTY| support depends on the platform. Windows 10 October 2018 Update is the first version that supports ConPTY, however it is still - considered unstable. ConPTY might become stable in the next release - of Windows 10. winpty support needs to be installed. If neither is + considered unstable. ConPTY has become stable with the initial release + of Windows 11. winpty support needs to be installed. If neither is supported then you cannot open a terminal window. *'terse'* *'noterse'* @@ -9162,8 +9276,9 @@ A jump table for the options with a short description can be found at |Q_op|. name. See |option-backslash| about using backslashes. 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. Backticks cannot be used in this option for security - reasons. + another default. + Environment variables are expanded |:set_env|. + Backticks cannot be used in this option for security reasons. *'thesaurusfunc'* *'tsrfu'* 'thesaurusfunc' 'tsrfu' string (default: empty) @@ -9491,6 +9606,7 @@ A jump table for the options with a short description can be found at |Q_op|. 'ttytype' 'tty' string (default from $TERM) global Alias for 'term', see above. + Environment variables are expanded |:set_env|. *'undodir'* *'udir'* 'undodir' 'udir' string (default ".") @@ -9508,6 +9624,7 @@ A jump table for the options with a short description can be found at |Q_op|. undo file that exists is used. When it cannot be read an error is given, no further entry is used. See |undo-persistence|. + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -9530,9 +9647,9 @@ A jump table for the options with a short description can be found at |Q_op|. 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 already use a large amount of memory. - Set to 0 for Vi compatibility: One level of undo and "u" undoes - itself: > + 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 < But you can also get Vi compatibility by including the 'u' flag in 'cpoptions', and still be able to use CTRL-R to repeat undo. @@ -9659,6 +9776,7 @@ A jump table for the options with a short description can be found at |Q_op|. Setting 'verbosefile' to a new value is like making it empty first. The difference with |:redir| is that verbose messages are not displayed when 'verbosefile' is set. + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -9673,6 +9791,7 @@ A jump table for the options with a short description can be found at |Q_op|. feature} Name of the directory where to store files for |:mkview|. For $XDG_CONFIG_HOME see |xdg-base-dir|. + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -9828,6 +9947,7 @@ A jump table for the options with a short description can be found at |Q_op|. When equal to "NONE" no viminfo file will be read or written. This option can be set with the |-i| command line flag. The |--clean| command line flag sets it to "NONE". + Environment variables are expanded |:set_env|. This option cannot be set from a |modeline| or in the |sandbox|, for security reasons. @@ -9865,9 +9985,9 @@ A jump table for the options with a short description can be found at |Q_op|. *'visualbell'* *'vb'* *'novisualbell'* *'novb'* *beep* 'visualbell' 'vb' boolean (default off) global - Use a visual bell instead of beeping. The terminal code to display the - visual bell is given with 't_vb'. When no beep or flash is wanted, - use: > + Use a visual bell instead of beeping. The terminal code to display + the visual bell is given with 't_vb'. When no beep or flash is + wanted, use: > :set vb t_vb= < If you want a short flash, you can use this on many terminals: > :set vb t_vb=[?5h$<100>[?5l @@ -9875,8 +9995,9 @@ A jump table for the options with a short description can be found at |Q_op|. to get a shorter or longer flash. Note: Vim will limit the bell to once per half a second. This avoids - having to wait for the flashing to finish when there are lots of bells, - e.g. on key repeat. This also happens without 'visualbell' set. + having to wait for the flashing to finish when there are lots of + bells, e.g. on key repeat. This also happens without 'visualbell' + set. In the GUI, 't_vb' defaults to "|f", which inverts the display for 20 msec. If you want to use a different time, use "|40f", @@ -9963,10 +10084,11 @@ A jump table for the options with a short description can be found at |Q_op|. 'wildcharm' 'wcm' number (default: none (0)) global 'wildcharm' works exactly like 'wildchar', except that it is - recognized when used inside a macro. You can find "spare" command-line - keys suitable for this option by looking at |ex-edit-index|. Normally - you'll never actually type 'wildcharm', just use it in mappings that - automatically invoke completion mode, e.g.: > + recognized when used inside a macro. You can find "spare" + command-line keys suitable for this option by looking at + |ex-edit-index|. Normally you'll never actually type 'wildcharm', + just use it in mappings that automatically invoke completion mode, + e.g.: > :set wcm= :cnoremap ss so $vim/sessions/*.vim < Then after typing :ss you can use CTRL-P & CTRL-N. @@ -10180,8 +10302,19 @@ A jump table for the options with a short description can be found at |Q_op|. *'wincolor'* *'wcr'* 'wincolor' 'wcr' string (default empty) local to window + DEPRECATED: Use 'winhighlight' if possible, this option uses + 'winhighlight' internally by setting it to: >vim + set winhighlight=!(:HighlightGroup +< If this option is set and 'winhighlight' is changed, then it will not + update the option value. For example, if 'wincolor' is set to "A" and + then 'winhighlight' is to an empty value, then 'wincolor' will still + remain as "A". Additionally, the existing value in 'winhighlight' will + be discarded when this option is set. + Highlight group name to use for this window instead of the Normal - color |hl-Normal|. + color |hl-Normal|. For other |highlight-groups|, see 'winhighlight'. + Note that it is not recommended to set this and 'winhighlight' at the + same time. *'window'* *'wi'* 'window' 'wi' number (default screen height - 1) @@ -10240,6 +10373,35 @@ A jump table for the options with a short description can be found at |Q_op|. 'winheight' applies to the current window. Use 'winminheight' to set the minimal height for other windows. + *'winhighlight'* *'whl'* +'winhighlight' 'whl' string (default empty) + local to window + Window-local highlight group mappings. Comma-delimited list of + highlight |group-name| pairs "{hl-from}:{hl-to},..." where each + {hl-from} is a |highlight-groups| item to be overridden by {hl-to} + group in the window. If {hl-from} is "Normal", then it will always + map to the "(" (window color) value in 'highlight'. + + If a highlight group name starts with "!", then it is assumed to map + to a value in 'highlight'. For example, this will override the + visual mode setting: >vim + set winhighlight=!v:SomeHighlightGroup +< This will map the occasion "v" to occasion "l" >vim + set winhighlight=!v:!l +< + Highlights of vertical separators are determined by the window to the + left of the separator. The 'tabline' highlight of a tabpage is + decided by the last-focused window of the tabpage. Highlights of + the popupmenu are determined by the current window. Highlights in the + message area cannot be overridden. + + When handling highlight group links, if a highlight group (which may + be a link as well) is overridden by 'winhighlight', then all highlight + groups that link to it will be affected. For example, if highlight + group C links to B which links to A, then >vim + set winhighlight=B:SomeHighlightGroup +< will make SomeHighlightGroup override groups B and C, but not A. + *'winminheight'* *'wmh'* 'winminheight' 'wmh' number (default 1) global diff --git a/runtime/doc/os_390.txt b/runtime/doc/os_390.txt index b30c1b2b..c7532d9e 100644 --- a/runtime/doc/os_390.txt +++ b/runtime/doc/os_390.txt @@ -1,7 +1,8 @@ -*os_390.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*os_390.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Ralf Schandl + VIM REFERENCE MANUAL by Ralf Schandl + *zOS* *z/OS* *OS390* *os390* *MVS* This file contains the particulars for the z/OS UNIX version of Vim. diff --git a/runtime/doc/os_amiga.txt b/runtime/doc/os_amiga.txt index 046a24fb..a7770799 100644 --- a/runtime/doc/os_amiga.txt +++ b/runtime/doc/os_amiga.txt @@ -1,7 +1,7 @@ -*os_amiga.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*os_amiga.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *Amiga* diff --git a/runtime/doc/os_beos.txt b/runtime/doc/os_beos.txt index 5ac41597..460175a5 100644 --- a/runtime/doc/os_beos.txt +++ b/runtime/doc/os_beos.txt @@ -1,7 +1,7 @@ -*os_beos.txt* For Vim version 9.1. Last change: 2020 Jun 07 +*os_beos.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *beos* *BeOS* *BeBox* diff --git a/runtime/doc/os_dos.txt b/runtime/doc/os_dos.txt index 7e85f714..55534304 100644 --- a/runtime/doc/os_dos.txt +++ b/runtime/doc/os_dos.txt @@ -1,7 +1,7 @@ -*os_dos.txt* For Vim version 9.1. Last change: 2025 Aug 06 +*os_dos.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *dos* *DOS* diff --git a/runtime/doc/os_haiku.txt b/runtime/doc/os_haiku.txt index bdabbb14..5d46b56c 100644 --- a/runtime/doc/os_haiku.txt +++ b/runtime/doc/os_haiku.txt @@ -1,7 +1,7 @@ -*os_haiku.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*os_haiku.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *Haiku* diff --git a/runtime/doc/os_mac.txt b/runtime/doc/os_mac.txt index 7e81b909..eb5cbc2b 100644 --- a/runtime/doc/os_mac.txt +++ b/runtime/doc/os_mac.txt @@ -1,7 +1,7 @@ -*os_mac.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*os_mac.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar et al. + VIM REFERENCE MANUAL by Bram Moolenaar et al. *mac* *Mac* *macintosh* *Macintosh* diff --git a/runtime/doc/os_mint.txt b/runtime/doc/os_mint.txt index 4ad0399d..3edc9d68 100644 --- a/runtime/doc/os_mint.txt +++ b/runtime/doc/os_mint.txt @@ -1,7 +1,7 @@ -*os_mint.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*os_mint.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Jens M. Felderhoff + VIM REFERENCE MANUAL by Jens M. Felderhoff *MiNT* *Atari* diff --git a/runtime/doc/os_msdos.txt b/runtime/doc/os_msdos.txt index d6d67f00..b64d5c39 100644 --- a/runtime/doc/os_msdos.txt +++ b/runtime/doc/os_msdos.txt @@ -1,7 +1,7 @@ -*os_msdos.txt* For Vim version 9.1. Last change: 2016 Feb 26 +*os_msdos.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *msdos* *ms-dos* *MSDOS* *MS-DOS* diff --git a/runtime/doc/os_os2.txt b/runtime/doc/os_os2.txt index bd24d139..f9df1d6a 100644 --- a/runtime/doc/os_os2.txt +++ b/runtime/doc/os_os2.txt @@ -1,7 +1,7 @@ -*os_os2.txt* For Vim version 9.1. Last change: 2015 Dec 31 +*os_os2.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Paul Slootman + VIM REFERENCE MANUAL by Paul Slootman *os2* *OS2* *OS/2* diff --git a/runtime/doc/os_qnx.txt b/runtime/doc/os_qnx.txt index e55bdf82..5131e4a9 100644 --- a/runtime/doc/os_qnx.txt +++ b/runtime/doc/os_qnx.txt @@ -1,7 +1,7 @@ -*os_qnx.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*os_qnx.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Julian Kinraid + VIM REFERENCE MANUAL by Julian Kinraid *QNX* *qnx* diff --git a/runtime/doc/os_risc.txt b/runtime/doc/os_risc.txt index dad3549b..b1a74801 100644 --- a/runtime/doc/os_risc.txt +++ b/runtime/doc/os_risc.txt @@ -1,7 +1,7 @@ -*os_risc.txt* For Vim version 9.1. Last change: 2011 May 10 +*os_risc.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Thomas Leonard + VIM REFERENCE MANUAL by Thomas Leonard *riscos* *RISCOS* *RISC-OS* diff --git a/runtime/doc/os_unix.txt b/runtime/doc/os_unix.txt index 90069a20..c315aec5 100644 --- a/runtime/doc/os_unix.txt +++ b/runtime/doc/os_unix.txt @@ -1,7 +1,7 @@ -*os_unix.txt* For Vim version 9.1. Last change: 2022 Nov 25 +*os_unix.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *unix* *Unix* diff --git a/runtime/doc/os_vms.txt b/runtime/doc/os_vms.txt index 8a800c10..7d00b59d 100644 --- a/runtime/doc/os_vms.txt +++ b/runtime/doc/os_vms.txt @@ -1,4 +1,4 @@ -*os_vms.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*os_vms.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL diff --git a/runtime/doc/os_win32.txt b/runtime/doc/os_win32.txt index 53b967f8..694e0fe7 100644 --- a/runtime/doc/os_win32.txt +++ b/runtime/doc/os_win32.txt @@ -1,7 +1,7 @@ -*os_win32.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*os_win32.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by George Reilly + VIM REFERENCE MANUAL by George Reilly *win32* *Win32* *MS-Windows* diff --git a/runtime/doc/pattern.txt b/runtime/doc/pattern.txt index 33816945..18d7a411 100644 --- a/runtime/doc/pattern.txt +++ b/runtime/doc/pattern.txt @@ -1,7 +1,7 @@ -*pattern.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*pattern.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Patterns and search commands *pattern-searches* @@ -1169,13 +1169,15 @@ x A single character, with no special meaning, matches itself *[:graph:]* [:graph:] isgraph ASCII printable characters excluding space *[:lower:]* [:lower:] (1) lowercase letters (all letters when - 'ignorecase' is used) + 'ignorecase' is used and the old + engine is in use |two-engines|) *[:print:]* [:print:] (2) printable characters including space *[:punct:]* [:punct:] ispunct ASCII punctuation characters *[:space:]* [:space:] whitespace characters: space, tab, CR, NL, vertical tab, form feed *[:upper:]* [:upper:] (3) uppercase letters (all letters when - 'ignorecase' is used) + 'ignorecase' is used and the old + engine is in use |two-engines|) *[:xdigit:]* [:xdigit:] hexadecimal digits: 0-9, a-f, A-F *[:return:]* [:return:] the character *[:tab:]* [:tab:] the character diff --git a/runtime/doc/pi_getscript.txt b/runtime/doc/pi_getscript.txt index ff617774..756d9e83 100644 --- a/runtime/doc/pi_getscript.txt +++ b/runtime/doc/pi_getscript.txt @@ -1,4 +1,4 @@ -*pi_getscript.txt* For Vim version 9.1. Last change: 2025 Aug 10 +*pi_getscript.txt* For Vim version 9.2. Last change: 2026 Feb 14 > GETSCRIPT REFERENCE MANUAL by Charles E. Campbell < @@ -57,7 +57,8 @@ The GetLatestVimScripts.dist file serves as an example and a template for your own personal list. Feel free to remove all the scripts mentioned within it; the "important" part of it is the first two lines. -Your computer needs to have wget or curl for GetLatestVimScripts to do its work. +Your computer needs to have wget or curl for GetLatestVimScripts to do its +work. 1. if compressed: gunzip getscript.vmb.gz 2. Unix: diff --git a/runtime/doc/pi_gzip.txt b/runtime/doc/pi_gzip.txt index cb4fc6b3..bce98d55 100644 --- a/runtime/doc/pi_gzip.txt +++ b/runtime/doc/pi_gzip.txt @@ -1,7 +1,7 @@ -*pi_gzip.txt* For Vim version 9.1. Last change: 2025 Mar 05 +*pi_gzip.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Editing compressed files with Vim *gzip* *bzip2* *compress* diff --git a/runtime/doc/pi_paren.txt b/runtime/doc/pi_paren.txt index 04988969..82fa1c78 100644 --- a/runtime/doc/pi_paren.txt +++ b/runtime/doc/pi_paren.txt @@ -1,7 +1,7 @@ -*pi_paren.txt* For Vim version 9.1. Last change: 2024 Nov 04 +*pi_paren.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Highlighting matching parens *matchparen* diff --git a/runtime/doc/pi_spec.txt b/runtime/doc/pi_spec.txt index a8d26cdb..986e00e0 100644 --- a/runtime/doc/pi_spec.txt +++ b/runtime/doc/pi_spec.txt @@ -1,4 +1,4 @@ -*pi_spec.txt* For Vim version 9.1. Last change: 2006 Apr 24 +*pi_spec.txt* For Vim version 9.2. Last change: 2026 Feb 14 by Gustavo Niemeyer ~ diff --git a/runtime/doc/pi_tar.txt b/runtime/doc/pi_tar.txt index 9064b2ba..0bba3c37 100644 --- a/runtime/doc/pi_tar.txt +++ b/runtime/doc/pi_tar.txt @@ -1,4 +1,4 @@ -*pi_tar.txt* For Vim version 9.1. Last change: 2025 Aug 10 +*pi_tar.txt* For Vim version 9.2. Last change: 2026 Feb 14 +====================+ | Tar File Interface | diff --git a/runtime/doc/pi_tutor.txt b/runtime/doc/pi_tutor.txt index 9b1de1f7..121b286d 100644 --- a/runtime/doc/pi_tutor.txt +++ b/runtime/doc/pi_tutor.txt @@ -1,4 +1,4 @@ -*pi_tutor.txt* For Vim version 9.1. Last change: 2025 May 19 +*pi_tutor.txt* For Vim version 9.2. Last change: 2026 Feb 14 INTERACTIVE TUTORIALS FOR VIM *vim-tutor-mode* diff --git a/runtime/doc/pi_vimball.txt b/runtime/doc/pi_vimball.txt index f498e57f..fdf71730 100644 --- a/runtime/doc/pi_vimball.txt +++ b/runtime/doc/pi_vimball.txt @@ -1,4 +1,4 @@ -*pi_vimball.txt* For Vim version 9.1. Last change: 2025 Aug 06 +*pi_vimball.txt* For Vim version 9.2. Last change: 2026 Feb 14 ---------------- Vimball Archiver @@ -9,13 +9,13 @@ Author: Charles E. Campbell Copyright: (c) 2004-2015 by Charles E. Campbell *Vimball-copyright* The VIM LICENSE (see |copyright|) applies to the files in this package, including vimballPlugin.vim, vimball.vim, and pi_vimball.txt. - except use "vimball" instead of "VIM". Like anything else that's free, - vimball.vim and its associated files are provided *as is* and comes with - no warranty of any kind, either expressed or implied. No guarantees - of merchantability. No guarantees of suitability for any purpose. By - using this plugin, you agree that in no event will the copyright - holder be liable for any damages resulting from the use of this - software. Use at your own risk! + except use "vimball" instead of "VIM". Like anything else that's + free, vimball.vim and its associated files are provided *as is* and + comes with no warranty of any kind, either expressed or implied. No + guarantees of merchantability. No guarantees of suitability for any + purpose. By using this plugin, you agree that in no event will the + copyright holder be liable for any damages resulting from the use of + this software. Use at your own risk! ============================================================================== 1. Contents *vba* *vimball* *vimball-contents* @@ -248,8 +248,8 @@ WINDOWS *vimball-windows* 13 : May 01, 2006 * exists("&acd") used to determine if the acd option exists 12 : May 01, 2006 * bugfix - the 'acd' option is not always defined - 11 : Apr 27, 2006 * VimballList would create missing subdirectories that - the vimball specified were needed. Fixed. + 11 : Apr 27, 2006 * VimballList would create missing subdirectories + that the vimball specified were needed. Fixed. 10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of functions. Included some more settings in them which frequently cause trouble. diff --git a/runtime/doc/pi_zip.txt b/runtime/doc/pi_zip.txt index e32d4c19..b1bc7fd7 100644 --- a/runtime/doc/pi_zip.txt +++ b/runtime/doc/pi_zip.txt @@ -1,4 +1,4 @@ -*pi_zip.txt* For Vim version 9.1. Last change: 2025 Sep 22 +*pi_zip.txt* For Vim version 9.2. Last change: 2026 Feb 14 +====================+ | Zip File Interface | diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt index 41f4da54..e968a210 100644 --- a/runtime/doc/popup.txt +++ b/runtime/doc/popup.txt @@ -1,10 +1,10 @@ -*popup.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*popup.txt* For Vim version 9.2. Last change: 2026 Mar 02 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar -Displaying text in a floating window. *popup* *popup-window* *popupwin* +Displaying text in a popup window. *popup* *popup-window* *popupwin* 1. Introduction |popup-intro| @@ -21,6 +21,7 @@ Displaying text in a floating window. *popup* *popup-window* *popupwin* Popup filter |popup-filter| Popup callback |popup-callback| Popup scrollbar |popup-scrollbar| + Popup opacity |popup-opacity| Popup mask |popup-mask| 4. Examples |popup-examples| @@ -772,6 +773,15 @@ The second argument of |popup_create()| is a dictionary with options: the popup window. highlight Highlight group name to use for the text, stored in the 'wincolor' option. + highlights Highlight group overrides, stored in the + 'winhighlight' option (same format). + opacity Opacity of the popup, a value between 0 and 100: + 0 is fully transparent (background text fully visible) + 100 is fully opaque (default, no transparency) + Values in between blend the popup background with the + underlying text, making it partially transparent. + Requires 'termguicolors' to be set. + Also see |popup-opacity|. padding List with numbers, defining the padding above/right/below/left of the popup (similar to CSS). An empty list uses a padding of 1 all around. The @@ -1046,6 +1056,42 @@ A click in the lower half will scroll the text up one line. However, this is limited so that the popup does not get smaller. + +POPUP OPACITY *popup-opacity* + +A popup window can be made semi-transparent by setting the "opacity" option. +The opacity value ranges from 0 to 100: + 0 Fully transparent - the popup background is invisible and the + text behind the popup is fully visible. + 100 Fully opaque (default) - the popup is not transparent at all. + 1-99 Partially transparent - the popup background is blended with + the underlying text, making both partially visible. + +The transparency effect requires using the GUI or having 'termguicolors' +enabled in the terminal. Without it, the opacity setting has no effect. + +When a popup is transparent: +- The popup's background color is blended with the background text +- The popup's text (foreground) remains fully visible and unblended +- Text behind the popup is visible through transparent areas +- The more transparent the popup (lower opacity), the more clearly the + background text can be seen + +This can be useful for: +- Creating overlay windows that don't completely obscure underlying text +- Showing contextual information without blocking the view +- Creating visual effects and modern UI designs + +Example with 50% opacity: > + let winid = popup_create('Semi-transparent text', #{ + \ line: 5, + \ col: 10, + \ opacity: 50, + \ }) + +The opacity can be changed dynamically using |popup_setoptions()|: > + call popup_setoptions(winid, #{opacity: 80}) + POPUP MASK *popup-mask* To minimize the text that the popup covers, parts of it can be made diff --git a/runtime/doc/print.txt b/runtime/doc/print.txt index f5842fb4..2e846648 100644 --- a/runtime/doc/print.txt +++ b/runtime/doc/print.txt @@ -1,7 +1,7 @@ -*print.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*print.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Printing *printing* @@ -304,7 +304,7 @@ another font will be used as follows: if o: is missing, then use b: Some CJK fonts do not contain characters for codes in the ASCII code range. -Also, some characters in the CJK ASCII code ranges differ in a few code points +Also, some characters in the CJK ASCII code ranges differ in a few codepoints from traditional ASCII characters. There are two additional fields to control printing of characters in the ASCII code range. diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt index 9a9788c2..581d00b7 100644 --- a/runtime/doc/quickfix.txt +++ b/runtime/doc/quickfix.txt @@ -1,7 +1,7 @@ -*quickfix.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*quickfix.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar This subject is introduced in section |30.1| of the user manual. @@ -491,8 +491,8 @@ entries parsed from lines. The following shows how to use a custom EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST: *:cdo* -:cdo[!] {cmd} Execute {cmd} in each valid entry in the quickfix list. - It works like doing this: > +:cdo[!] {cmd} Execute {cmd} in each valid entry in the quickfix + list. It works like doing this: > :cfirst :{cmd} :cnext @@ -625,6 +625,10 @@ can go back to the unfiltered list using the |:colder|/|:lolder| command. errors. If the window is already open and there are no recognized errors, close the window. + When opening the window and [height] is given, the + window becomes that high (if there is room). When + [height] is omitted the window is made ten lines high. + *:lw* *:lwindow* :lw[indow] [height] Same as ":cwindow", except use the window showing the location list for the current window. @@ -1281,6 +1285,17 @@ For writing a compiler plugin, see |write-compiler-plugin|. Use the |compiler-make| plugin to undo the effect of a compiler plugin. +BIOME *compiler-biome* *quickfix-biome* + +Biome check lints JavaScript, TypeScript, JSX, TSX, JSON, JSONC, HTML, Vue, +Svelte, Astro, CSS, GraphQL and GritQL files. + +Commonly used compiler options can be added to 'makeprg' by setting the +b/g:biome_makeprg_params variable. For example (global default is ""): > + + let b:biome_makeprg_params = "--diagnostic-level=error --staged" + + CPPCHECK *quickfix-cppcheck* *compiler-cppcheck* Use g/b:`c_cppcheck_params` to set cppcheck parameters. The global @@ -1643,6 +1658,22 @@ b/g:mypy_makeprg_params variable. For example: > The global default is "--strict --ignore-missing-imports". +PYRIGHT TYPE CHECKER *compiler-pyright* + +Commonly used compiler options can be added to 'makeprg' by setting the +b/g:pyright_makeprg_params variable. + +The global default is "pyright". + +TY TYPE CHECKER *compiler-ty* + +Commonly used compiler options and executable can be set by the +b/g:ty_makeprg variable. For example: > + + let b:ty_makeprg = "uv run ty" + +The global default is "ty --no-progress --color=never". + RUFF LINTER *compiler-ruff* Commonly used compiler options can be added to 'makeprg' by setting the @@ -1724,6 +1755,16 @@ shells and OSes and also does not allow to use other available TeX options, if any. If your TeX doesn't support "-interaction=nonstopmode", please report it with different means to express \nonstopmode from the command line. +TOMBI *quickfix-toml* *compiler-tombi* + +The tombi compiler plugin does not compile. + +It runs "tombi lint" and parses diagnostics into the quickfix list. + +Color codes are stripped from the linter output to keep |errorformat| +parsing reliable. This may require a working "sed" for old versions of the +tombi linter. + TSC COMPILER *compiler-tsc* The executable and compiler options can be added to 'makeprg' by setting the @@ -1994,9 +2035,9 @@ case they have to precede the letter, e.g. '%+A' or '%-G': %- do not include the matching multi-line in any output %+ include the whole matching line in the %m error string -One prefix is only useful in combination with '+' or '-', namely %G. It parses -over lines containing general information like compiler version strings or -other headers that can be skipped. +One prefix is only useful in combination with '+' or '-', namely %G. It +parses over lines containing general information like compiler version strings +or other headers that can be skipped. %-G ignore this message %+G general message @@ -2164,8 +2205,8 @@ prints information about entering a directory in the form "Making all in dir". Making all in dir2 ./dir1/dir2 Making all in dir2 ./dir1/dir2 - This can be solved by printing absolute directories in the "enter directory" - message or by printing "leave directory" messages. + This can be solved by printing absolute directories in the "enter + directory" message or by printing "leave directory" messages. To avoid this problem, ensure to print absolute directory names and "leave directory" messages. diff --git a/runtime/doc/quickref.txt b/runtime/doc/quickref.txt index e7dd45f8..fd277576 100644 --- a/runtime/doc/quickref.txt +++ b/runtime/doc/quickref.txt @@ -1,7 +1,8 @@ -*quickref.txt* For Vim version 9.1. Last change: 2025 Aug 23 +*quickref.txt* For Vim version 9.2. Last change: 2026 Mar 04 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar + Quick reference guide @@ -938,6 +939,7 @@ Short explanation of each option: *option-list* 'splitright' 'spr' new window is put right of the current one 'startofline' 'sol' commands move cursor to first non-blank in line 'statusline' 'stl' custom format for the status line +'statuslineopt' 'stlo' additional options for the |status-line| 'suffixes' 'su' suffixes that are ignored with multiple match 'suffixesadd' 'sua' suffixes added when searching for a file 'swapfile' 'swf' whether to use a swapfile for a buffer @@ -961,6 +963,7 @@ Short explanation of each option: *option-list* 'termbidi' 'tbidi' terminal takes care of bi-directionality 'termencoding' 'tenc' character encoding used by the terminal 'termguicolors' 'tgc' use GUI colors for the terminal +'termsync' 'tsy' enable terminal sync mode for redraw 'termwinkey' 'twk' key that precedes a Vim command in a terminal 'termwinscroll' 'twsl' max number of scrollback lines in a terminal window 'termwinsize' 'tws' size of a terminal window @@ -1015,6 +1018,7 @@ Short explanation of each option: *option-list* 'wildoptions' 'wop' specifies how command line completion is done 'winaltkeys' 'wak' when the windows system handles ALT keys 'wincolor' 'wcr' window-local highlighting +'winhighlight' 'whl' window-local highlighting mappings 'window' 'wi' nr of lines to scroll for CTRL-F and CTRL-B 'winfixbuf' 'wfb' keep window focused on a single buffer 'winfixheight' 'wfh' keep window height when opening/closing windows diff --git a/runtime/doc/quotes.txt b/runtime/doc/quotes.txt index 0eeb1b69..19d752c6 100644 --- a/runtime/doc/quotes.txt +++ b/runtime/doc/quotes.txt @@ -1,7 +1,7 @@ -*quotes.txt* For Vim version 9.1. Last change: 2018 Mar 29 +*quotes.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *quotes* diff --git a/runtime/doc/recover.txt b/runtime/doc/recover.txt index b399b239..c52910c1 100644 --- a/runtime/doc/recover.txt +++ b/runtime/doc/recover.txt @@ -1,7 +1,7 @@ -*recover.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*recover.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Recovery after a crash *crash-recovery* diff --git a/runtime/doc/remote.txt b/runtime/doc/remote.txt index 79c9011b..2f77fcaa 100644 --- a/runtime/doc/remote.txt +++ b/runtime/doc/remote.txt @@ -1,7 +1,7 @@ -*remote.txt* For Vim version 9.1. Last change: 2025 Aug 22 +*remote.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Vim client-server communication *client-server* diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt index d1b2012c..ac7c7871 100644 --- a/runtime/doc/repeat.txt +++ b/runtime/doc/repeat.txt @@ -1,7 +1,7 @@ -*repeat.txt* For Vim version 9.1. Last change: 2025 Oct 13 +*repeat.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Repeating commands, Vim scripts and debugging *repeating* @@ -328,6 +328,12 @@ For writing a Vim script, see chapter 41 of the user manual |usr_41.txt|. you will need to write `filetype plugin indent on` AFTER all `packadd!` commands. + To programmatically decide if `!` is needed during + startup, check |v:vim_did_init|: use `!` if 0 (to not + duplicate |load-plugins| step), no `!` otherwise (to + force load plugin files as otherwise they won't be + loaded automatically). + Also see |pack-add|. {only available when compiled with |+eval|} @@ -1214,7 +1220,8 @@ Additionally, these commands can be used: *>bt* *>backtrace* *>where* - backtrace Show the call stacktrace for current debugging session. + backtrace Show the call stacktrace for current debugging + session. bt where *>frame* diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt index 8589bb6a..206951f8 100644 --- a/runtime/doc/rileft.txt +++ b/runtime/doc/rileft.txt @@ -1,7 +1,7 @@ -*rileft.txt* For Vim version 9.1. Last change: 2022 Oct 12 +*rileft.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Avner Lottem + VIM REFERENCE MANUAL by Avner Lottem updated by Nadim Shaikli diff --git a/runtime/doc/russian.txt b/runtime/doc/russian.txt index bf6493d5..97d04563 100644 --- a/runtime/doc/russian.txt +++ b/runtime/doc/russian.txt @@ -1,7 +1,7 @@ -*russian.txt* For Vim version 9.1. Last change: 2006 Apr 24 +*russian.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Vassily Ragosin + VIM REFERENCE MANUAL by Vassily Ragosin Russian language localization and support in Vim *russian* *Russian* @@ -11,13 +11,13 @@ Russian language localization and support in Vim *russian* *Russian* 3. Localization |russian-l18n| 4. Known issues |russian-issues| -=============================================================================== +============================================================================== 1. Introduction *russian-intro* Russian language is supported perfectly well in Vim. You can type and view Russian text just as any other, without the need to tweak the settings. -=============================================================================== +============================================================================== 2. Russian keymaps *russian-keymap* To switch between languages you can use your system native keyboard switcher, @@ -41,7 +41,7 @@ This is in utf-8, you cannot read this if your 'encoding' is not utf-8. You have to type this command in one line, it is wrapped for the sake of readability. -=============================================================================== +============================================================================== 3. Localization *russian-l18n* If you wish to use messages, help files, menus and other items translated to @@ -60,7 +60,7 @@ $VIMRUNTIME directory. We recommend using UTF-8 archive. In order to use the Russian documentation, make sure you have set the 'helplang' option to "ru". -=============================================================================== +============================================================================== 4. Known issues *russian-issues* -- If you are using Russian message translations in Win32 console, then @@ -69,5 +69,5 @@ In order to use the Russian documentation, make sure you have set the is related to a bug in GNU gettext library and may be fixed in the future releases of gettext. -=============================================================================== +============================================================================== vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/scroll.txt b/runtime/doc/scroll.txt index f0ec16b6..63d0beed 100644 --- a/runtime/doc/scroll.txt +++ b/runtime/doc/scroll.txt @@ -1,7 +1,7 @@ -*scroll.txt* For Vim version 9.1. Last change: 2024 Jul 06 +*scroll.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Scrolling *scrolling* diff --git a/runtime/doc/sign.txt b/runtime/doc/sign.txt index f49f74e9..22233efb 100644 --- a/runtime/doc/sign.txt +++ b/runtime/doc/sign.txt @@ -1,7 +1,7 @@ -*sign.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*sign.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Gordon Prieur + VIM REFERENCE MANUAL by Gordon Prieur and Bram Moolenaar diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt index 579dce41..27f97548 100644 --- a/runtime/doc/spell.txt +++ b/runtime/doc/spell.txt @@ -1,4 +1,4 @@ -*spell.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*spell.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -516,10 +516,6 @@ The older, OpenOffice 2 files may be used if this doesn't work: You can also use a plain word list. The results are the same, the choice depends on what word lists you can find. -If you install Aap (from www.a-a-p.org) you can use the recipes in the -runtime/spell/??/ directories. Aap will take care of downloading the files, -apply patches needed for Vim and build the .spl file. - Make sure your current locale is set properly, otherwise Vim doesn't know what characters are upper/lower case letters. If the locale isn't available (e.g., when using an MS-Windows codepage on Unix) add tables to the .aff file diff --git a/runtime/doc/sponsor.txt b/runtime/doc/sponsor.txt index 6aaa9069..3288bb6e 100644 --- a/runtime/doc/sponsor.txt +++ b/runtime/doc/sponsor.txt @@ -1,7 +1,7 @@ -*sponsor.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*sponsor.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar @@ -22,30 +22,6 @@ For the most recent information about sponsoring look on the Vim web site: More explanations can be found in the |sponsor-faq|. -REGISTERED VIM USER *register* - -You can become a registered Vim user by sending at least 10 euro. This works -similar to sponsoring Vim, see |sponsor| above. Registration was made -possible for the situation where your boss or bookkeeper may be willing to -register software, but does not like the terms "sponsoring" and "donation". - -More explanations can be found in the |register-faq|. - - -VOTE FOR FEATURES *vote-for-features* - -Note: Voting for features has been discontinued since the passing of |Bram| in -2023. The following two links still work, but they are no longer updated. So -they now only provide a historic view as of summer 2023. - -The voting results appear on the results page, which is visible for everybody: -http://www.vim.org/sponsor/vote_results.php - -Additionally, once you have sent 100 euro or more in total, your name appears -in the "Vim hall of honour": http://www.vim.org/sponsor/hall_of_honour.php -But only if you enable this on your account page. - - HOW TO SEND MONEY *send-money* Credit card Through PayPal, see the PayPal site for information: @@ -58,77 +34,45 @@ Credit card Through PayPal, see the PayPal site for information: In Euro countries a bank transfer is preferred, this has lower costs. -Other methods See |iccf-donations|. +Other methods See |donate|. Include "Vim sponsor" or "Vim registration" in the comment of your money transfer. QUESTIONS AND ANSWERS *sponsor-faq* *register-faq* -Why should I give money? +Why should I give money?~ If you do not show your appreciation for Vim, the development team will be less motivated to fix bugs and add new features. They will do something else instead. -How much money should I send? +How much money should I send?~ That is up to you. The more you give, the more children will be helped. An indication for individuals that use Vim at home: 10 Euro per year. For professional use: 30 Euro per year per person. -How do I become a Vim sponsor or registered Vim user? - -Send money, as explained above |send-money| and include your e-mail address. -When the money has been received you will receive a unique registration key. -This key can be used on the Vim website to get an extra page where you can -choose whether others will be able to see that you donated. There is a link -to this page on your "My Account" page. - - -What is the difference between sponsoring and registering? - -It has a different name. Use the term "registration" if your boss doesn't -like "sponsoring" or "donation". The benefits are the same. - - -How can I send money? +How can I send money?~ See |send-money|. Check the web site for the most recent information: http://www.vim.org/sponsor/ -Why don't you use the SourceForge donation system? - -SourceForge takes 5% of the donations for themselves. If you want to support -SourceForge you can send money to them directly. - - -I cannot afford to send money, may I still use Vim? - -Yes. - - -I did not register Vim, can I use all available features? +I cannot afford to send money, may I still use Vim?~ Yes. -I noticed a bug, do I need to register before I can report it? - -No, suggestions for improving Vim can always be given. For improvements use -the developer |maillist|, for reporting bugs see |bugs|. - - -How about Charityware? +How about Charityware?~ Currently the Vim donations go to |uganda| anyway. Thus it doesn't matter if -you sponsor Vim or ICCF. +you sponsor Vim or Kuwasha. -I donated $$$, now please add feature XYZ! +I donated $$$, now please add feature XYZ!~ There is no direct relation between your donation and the work developers do. Otherwise you would be paying for work and we would have to pay tax over the @@ -136,15 +80,12 @@ donation. If you want to hire one of the developers for specific work, contact them directly, don't use the donation system. -Are the donations tax deductible? +Are the donations tax deductible?~ -That depends on your country. The donations to help the children in |Uganda| -are tax deductible in Holland, Germany, Canada and in the USA. See the ICCF -website https://iccf-holland.org/donate.html (Note: this process is currently -undergoing some changes and will be done differently in the future). +Possibly. Please refer to |Kuwasha| for this question. -Can you send me a bill? +Can you send me a bill?~ No, because there is no relation between the money you send and the work that is done. But a receipt is possible. diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt index ec18a96d..46a47b7e 100644 --- a/runtime/doc/starting.txt +++ b/runtime/doc/starting.txt @@ -1,7 +1,7 @@ -*starting.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*starting.txt* For Vim version 9.2. Last change: 2026 Mar 17 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Starting Vim *starting* @@ -252,7 +252,8 @@ a slash. Thus "-R" means recovery and "-/R" readonly. ":sh", filtering, the |system()| function, backtick expansion and libcall(). Also disallowed are |delete()|, |rename()|, |mkdir()|, - |job_start()|, |setenv()| etc. + |job_start()|, |setenv()| and setting environment variables, + etc. Interfaces, such as Python, Ruby and Lua, are also disabled, since they could be used to execute shell commands. Perl uses the Safe module. @@ -843,6 +844,9 @@ accordingly. Vim proceeds in this order: If Vim was started in Ex mode with the "-s" argument, all following initializations until 4. are skipped. Only the "-u" option is interpreted. + + The |v:vim_did_init| variable is set to 1 after this step is finished. + *evim.vim* a. If Vim was started as |evim| or |eview| or with the |-y| argument, the script $VIMRUNTIME/evim.vim will be loaded. @@ -887,8 +891,8 @@ accordingly. Vim proceeds in this order: III The environment variable EXINIT. The value of $EXINIT is used as an Ex command line. IV The user exrc file(s). Same as for the user vimrc file, but with - "vimrc" replaced by "exrc". But only one of ".exrc" and "_exrc" is - used, depending on the system. And without the (*)! + "vimrc" replaced by "exrc". But only one of ".exrc" and "_exrc" + is used, depending on the system. And without the (*)! V The default vimrc file, $VIMRUNTIME/defaults.vim. This sets up options values and has "syntax on" and "filetype on" commands, which is what most new users will want. See |defaults.vim|. @@ -1122,8 +1126,13 @@ This is not an exhaustive list of those directories: `$XDG_DATA_HOME` $HOME/.local/share Persistent data files `$XDG_STATE_HOME` $HOME/.local/state State data files -Vim will only use the `$XDG_CONFIG_HOME` directory, the others are not -(yet) used for its various configuration and state files. + *xdg.vim* +Vim itself will only use the $XDG_CONFIG_HOME directory. Support for the +other XDG directories is provided by the "$VIMRUNTIME/xdg.vim" script. +Note: xdg.vim is only effective if the $XDG_CONFIG_HOME/vim directory (or +its default fallback) exists. By default, it only sets the 'viminfofile' +option. Other option settings are commented out, see the script for +details on how to enable them. *xdg-vimrc* Vim, on Unix systems, will look at `$XDG_CONFIG_HOME/vim/vimrc` for its @@ -1137,7 +1146,8 @@ and `~/.vim/vimrc` file. When the |xdg-vimrc| is used the 'runtimepath' and 'packpath' options will be modified accordingly to respect the |xdg-base-dir|: > - "$XDG_CONFIG_HOME/vim,$VIMRUNTIME,/after,$XDG_CONFIG_HOME/vim/after" + "$XDG_CONFIG_HOME/vim,$VIM/vimfiles,$VIMRUNTIME,$VIM/vimfiles/after, + $XDG_CONFIG_HOME/vim/after" < Avoiding trojan horses ~ @@ -1284,7 +1294,7 @@ CTRL-Z Suspend Vim, like ":stop". Works in Normal and in Visual mode. In Insert and Command-line mode, the CTRL-Z is inserted as a normal character. In Visual mode Vim goes back to Normal - mode. + mode before suspending. Note: if CTRL-Z undoes a change see |mswin.vim|. @@ -1459,8 +1469,8 @@ This saves the current Session, and starts off the command to load another. A session includes all tab pages, unless "tabpages" was removed from 'sessionoptions'. |tab-page| -The |SessionLoadPost| autocmd event is triggered after a session file is -loaded/sourced. +The |SessionLoadPre| autocmd event is triggered before a session file is +loaded/sourced and |SessionLoadPost| autocmd event is triggered after. *SessionLoad-variable* While the session file is loading, the SessionLoad global variable is set to 1. Plugins can use this to postpone some work until the SessionLoadPost event diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt index 236340da..16756c22 100644 --- a/runtime/doc/syntax.txt +++ b/runtime/doc/syntax.txt @@ -1,4 +1,4 @@ -*syntax.txt* For Vim version 9.1. Last change: 2025 Oct 14 +*syntax.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -487,10 +487,10 @@ 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: > +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 < @@ -615,9 +615,9 @@ browsers; the tags get pasted with the text. When "fallback" (default value), the same elements are generated for older browsers, but newer browsers (detected by CSS feature query) hide the - 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. + 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 elements are not generated at all. Only the generated-content method is used. This means that old browsers, notably @@ -1125,6 +1125,7 @@ new-generation language oriented to full-scenario intelligence. All highlighting is enabled by default. To disable highlighting for a specific group, set the corresponding variable to 0 in your |vimrc|. All options to disable highlighting are: > + :let g:cangjie_builtin_color = 0 :let g:cangjie_comment_color = 0 :let g:cangjie_identifier_color = 0 :let g:cangjie_keyword_color = 0 @@ -1885,6 +1886,14 @@ The backticks for inline java are highlighted according to the htmlError group to make them easier to see. +GDB *gdb.vim* *ft-gdb-syntax* + +The GDB syntax file provides syntax |folding| (see |:syn-fold|) for comments +and block statements. This can be enabled with: > + + :set foldmethod=syntax + + GROFF *groff.vim* *ft-groff-syntax* The groff syntax file is a wrapper for |nroff.vim|, see the notes @@ -2701,50 +2710,50 @@ If you don't want to highlight these errors, leave it unset. NROFF *nroff.vim* *ft-nroff-syntax* -The nroff syntax file works with AT&T n/troff out of the box. You need to -activate the GNU groff extra features included in the syntax file before you -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, arrange for files to be recognized as groff (see +The nroff syntax file works with AT&T n/troff as-is. To support GNU troff +(groff), which Linux and BSD distributions use as their default typesetting +package, arrange for files to be recognized as groff input (see |ft-groff-syntax|) or add the following option to your start-up files: > :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 -there are extensions to the language primitives. For example, in AT&T troff -you access the year as a 2-digit number with the request \(yr. In groff you -can use the same request, recognized for compatibility, or you can use groff's -native syntax, \[yr]. Furthermore, you can use a 4-digit year directly: -\[year]. Macro requests can be longer than 2 characters, for example, GNU mm -accepts the requests ".VERBON" and ".VERBOFF" for creating verbatim -environments. +GNU troff differs from older AT&T n/troff programs (that you may still find in +Solaris or Plan 9) by extending the *roff language syntax. For example, in +AT&T troff, you access the count of years since 1900 with the escape sequence +\n(yr. In groff you can do the same, which it recognizes for compatibility, +or use groff's extended syntax, \n[yr]. AT&T troff documented the yr register +as storing the "last two digits of current year", but had a Y2K problem; in +groff, you can access the Gregorian year correctly: \n[year]. In groff, font, +register, macro, string, and request names can exceed two characters; for +example, with groff's mm package, the control lines ".VERBON" and ".VERBOFF" +call macros of those names to bracket displays of "verbatim" content. In order to obtain the best formatted output g/troff can give you, you should follow a few simple rules about spacing and punctuation. -1. Do not leave empty spaces at the end of lines. +1. Break the line (put a carriage return) at the end of every sentence. Don't + permit trailing spaces before the newline. -2. Leave one space and one space only after an end-of-sentence period, - exclamation mark, etc. +2. If a line ends with a period, question mark, or exclamation point that does + not end a sentence, follow it with the dummy character escape sequence \&. -3. For reasons stated below, it is best to follow all period marks with a - carriage return. +3. If you're using a macro package, employ its paragraphing macros to achieve + indentation of paragraphs and spacing between them. -The reason behind these unusual tips is that g/n/troff have a line breaking -algorithm that can be easily upset if you don't follow the rules given above. +4. Use the empty request, a '.' on a line by itself, freely to visually + separate material for ease of document maintenance. -Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph and, -furthermore, it does not have a concept of glue or stretch, all horizontal and -vertical space input will be output as is. +The reason for these tips is that g/n/troff attempts to detect the ends of +sentences, and can use that information to apply inter-sentence space. Using +them also minimizes the size of diffs where lines change due only to refilling +in the text editor. Macro packages typically employ inter-paragraph spacing +amounts other than one vee (which is the result of a blank input line), and +typically store that spacing amount, and that of paragraph indentation, in +user-configurable registers so that pages lay out consistently. -Therefore, you should be careful about not using more space between sentences -than you intend to have in your final document. For this reason, the common -practice is to insert a carriage return immediately after all punctuation -marks. If you want to have "even" text in your final processed output, you -need to maintain regular spacing in the input text. To mark both trailing +Unlike TeX, troff fills text line-by-line, not paragraph-by-paragraph. If you +desire consistent spacing between words and sentences in formatted output, you +must maintain consistent spacing in the input text. To mark both trailing spaces and two or more spaces after a punctuation as an error, use: > :let nroff_space_errors = 1 @@ -2764,11 +2773,11 @@ file: > let b:preprocs_as_sections = 1 -As well, the syntax file adds an extra paragraph marker for the extended -paragraph macro (.XP) in the ms package. +Further, the syntax file adds an extra paragraph marker for the XP +paragraphing macro in the ms package, a Berkeley and GNU extension. -Finally, there is a |groff.vim| syntax file that can be used for enabling -groff syntax highlighting either on a file basis or globally by default. +Finally, there is a |groff.vim| syntax file that can be used to enable groff +syntax highlighting either on a per-file basis or globally by default. OCAML *ocaml.vim* *ft-ocaml-syntax* @@ -3222,7 +3231,7 @@ Pascal. Use this if you don't use assembly and Pascal: > PYTHON *python.vim* *ft-python-syntax* -There are six options to control Python syntax highlighting. +There are seven options to control Python syntax highlighting. For highlighted numbers: > :let python_no_number_highlight = 1 @@ -3242,10 +3251,13 @@ The first option implies the second one. For highlighted trailing whitespace and mix of spaces and tabs: > :let python_space_error_highlight = 1 +For highlighted built-in constants distinguished from other keywords: > + :let python_constant_highlight = 1 + If you want all possible Python highlighting: > :let python_highlight_all = 1 -This has the same effect as setting python_space_error_highlight and -unsetting all the other ones. +This has the same effect as setting python_space_error_highlight, +python_constant_highlight and unsetting all the other ones. If you use Python 2 or straddling code (Python 2 and 3 compatible), you can enforce the use of an older syntax file with support for @@ -4698,7 +4710,7 @@ the region, but not the contents of the region, are marked as concealable. Whether or not they are actually concealed depends on the setting on the 'conceallevel' option. The ends of a region can only be concealed separately in this way when they have their own highlighting via "matchgroup". The -|synconcealed()| function can be used to retrieve information about conealed +|synconcealed()| function can be used to retrieve information about concealed items. cchar *:syn-cchar* diff --git a/runtime/doc/tabpage.txt b/runtime/doc/tabpage.txt index 590221bc..3e307b64 100644 --- a/runtime/doc/tabpage.txt +++ b/runtime/doc/tabpage.txt @@ -1,7 +1,7 @@ -*tabpage.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*tabpage.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Editing with windows in multiple tab pages. *tab-page* *tabpage* diff --git a/runtime/doc/tags b/runtime/doc/tags index 94401708..77b19ec7 100644 --- a/runtime/doc/tags +++ b/runtime/doc/tags @@ -9,6 +9,7 @@ $HOME-windows options.txt /*$HOME-windows* $MYGVIMRC gui.txt /*$MYGVIMRC* $MYVIMDIR starting.txt /*$MYVIMDIR* $MYVIMRC starting.txt /*$MYVIMRC* +$NoDefaultCurrentDirectoryInExePath builtin.txt /*$NoDefaultCurrentDirectoryInExePath* $VIM starting.txt /*$VIM* $VIM-use version5.txt /*$VIM-use* $VIMRUNTIME starting.txt /*$VIMRUNTIME* @@ -376,6 +377,7 @@ $quote eval.txt /*$quote* 'go-m' options.txt /*'go-m'* 'go-p' options.txt /*'go-p'* 'go-r' options.txt /*'go-r'* +'go-s' options.txt /*'go-s'* 'go-t' options.txt /*'go-t'* 'go-v' options.txt /*'go-v'* 'gp' options.txt /*'gp'* @@ -449,8 +451,6 @@ $quote eval.txt /*$quote* 'infercase' options.txt /*'infercase'* 'insertmode' options.txt /*'insertmode'* 'is' options.txt /*'is'* -'ise' options.txt /*'ise'* -'isexpand' options.txt /*'isexpand'* 'isf' options.txt /*'isf'* 'isfname' options.txt /*'isfname'* 'isi' options.txt /*'isi'* @@ -1034,7 +1034,9 @@ $quote eval.txt /*$quote* 'stal' options.txt /*'stal'* 'startofline' options.txt /*'startofline'* 'statusline' options.txt /*'statusline'* +'statuslineopt' options.txt /*'statuslineopt'* 'stl' options.txt /*'stl'* +'stlo' options.txt /*'stlo'* 'stmp' options.txt /*'stmp'* 'stpl' options.txt /*'stpl'* 'sts' options.txt /*'sts'* @@ -1069,6 +1071,7 @@ $quote eval.txt /*$quote* 't_AU' term.txt /*'t_AU'* 't_BD' term.txt /*'t_BD'* 't_BE' term.txt /*'t_BE'* +'t_BS' term.txt /*'t_BS'* 't_CF' term.txt /*'t_CF'* 't_CS' term.txt /*'t_CS'* 't_CV' term.txt /*'t_CV'* @@ -1079,6 +1082,7 @@ $quote eval.txt /*$quote* 't_Ds' term.txt /*'t_Ds'* 't_EC' term.txt /*'t_EC'* 't_EI' term.txt /*'t_EI'* +'t_ES' term.txt /*'t_ES'* 't_F1' term.txt /*'t_F1'* 't_F2' term.txt /*'t_F2'* 't_F3' term.txt /*'t_F3'* @@ -1233,6 +1237,8 @@ $quote eval.txt /*$quote* 'termbidi' options.txt /*'termbidi'* 'termencoding' options.txt /*'termencoding'* 'termguicolors' options.txt /*'termguicolors'* +'termresize' options.txt /*'termresize'* +'termsync' options.txt /*'termsync'* 'termwinkey' options.txt /*'termwinkey'* 'termwinscroll' options.txt /*'termwinscroll'* 'termwinsize' options.txt /*'termwinsize'* @@ -1264,10 +1270,12 @@ $quote eval.txt /*$quote* 'tplo' options.txt /*'tplo'* 'tpm' options.txt /*'tpm'* 'tr' options.txt /*'tr'* +'trz' options.txt /*'trz'* 'ts' options.txt /*'ts'* 'tsl' options.txt /*'tsl'* 'tsr' options.txt /*'tsr'* 'tsrfu' options.txt /*'tsrfu'* +'tsy' options.txt /*'tsy'* 'ttimeout' options.txt /*'ttimeout'* 'ttimeoutlen' options.txt /*'ttimeoutlen'* 'ttm' options.txt /*'ttm'* @@ -1333,6 +1341,7 @@ $quote eval.txt /*$quote* 'wfw' options.txt /*'wfw'* 'wh' options.txt /*'wh'* 'whichwrap' options.txt /*'whichwrap'* +'whl' options.txt /*'whl'* 'wi' options.txt /*'wi'* 'wic' options.txt /*'wic'* 'wig' options.txt /*'wig'* @@ -1351,6 +1360,7 @@ $quote eval.txt /*$quote* 'winfixheight' options.txt /*'winfixheight'* 'winfixwidth' options.txt /*'winfixwidth'* 'winheight' options.txt /*'winheight'* +'winhighlight' options.txt /*'winhighlight'* 'winminheight' options.txt /*'winminheight'* 'winminwidth' options.txt /*'winminwidth'* 'winptydll' options.txt /*'winptydll'* @@ -1411,6 +1421,7 @@ $quote eval.txt /*$quote* +cindent various.txt /*+cindent* +clientserver various.txt /*+clientserver* +clipboard various.txt /*+clipboard* ++clipboard_provider various.txt /*+clipboard_provider* +clipboard_working various.txt /*+clipboard_working* +cmd editing.txt /*+cmd* +cmdline_compl various.txt /*+cmdline_compl* @@ -3841,6 +3852,7 @@ $quote eval.txt /*$quote* motion.txt /** map.txt /** intro.txt /** + intro.txt /** scroll.txt /** scroll.txt /** map.txt /** @@ -3961,6 +3973,7 @@ $quote eval.txt /*$quote* term.txt /** -xterm term.txt /*-xterm* term.txt /** + intro.txt /** term.txt /** term.txt /** = change.txt /*=* @@ -4560,7 +4573,6 @@ E1335 vim9class.txt /*E1335* E1336 options.txt /*E1336* E1337 vim9class.txt /*E1337* E1338 vim9class.txt /*E1338* -E1339 textprop.txt /*E1339* E134 change.txt /*E134* E1340 vim9class.txt /*E1340* E1341 vim9class.txt /*E1341* @@ -4668,6 +4680,7 @@ E1433 vim9.txt /*E1433* E1434 vim9.txt /*E1434* E1435 vim9class.txt /*E1435* E1436 vim9class.txt /*E1436* +E1437 eval.txt /*E1437* E144 various.txt /*E144* E145 starting.txt /*E145* E146 change.txt /*E146* @@ -4753,6 +4766,11 @@ E1567 remote.txt /*E1567* E1568 options.txt /*E1568* E1569 builtin.txt /*E1569* E157 sign.txt /*E157* +E1570 builtin.txt /*E1570* +E1571 builtin.txt /*E1571* +E1572 options.txt /*E1572* +E1573 channel.txt /*E1573* +E1574 channel.txt /*E1574* E158 sign.txt /*E158* E159 sign.txt /*E159* E16 cmdline.txt /*E16* @@ -5739,6 +5757,7 @@ KVim gui_x11.txt /*KVim* KeyInputPre autocmd.txt /*KeyInputPre* Kibaale uganda.txt /*Kibaale* Korean mbyte.txt /*Korean* +Kuwasha uganda.txt /*Kuwasha* L motion.txt /*L* Linux-backspace options.txt /*Linux-backspace* List eval.txt /*List* @@ -5776,7 +5795,6 @@ Neovim intro.txt /*Neovim* NetBSD-backspace options.txt /*NetBSD-backspace* NetBeans netbeans.txt /*NetBeans* NetUserPass() pi_netrw.txt /*NetUserPass()* -NoDefaultCurrentDirectoryInExePath builtin.txt /*NoDefaultCurrentDirectoryInExePath* None eval.txt /*None* Normal intro.txt /*Normal* Normal-mode intro.txt /*Normal-mode* @@ -5890,6 +5908,7 @@ Select-mode-mapping visual.txt /*Select-mode-mapping* Session starting.txt /*Session* SessionLoad-variable starting.txt /*SessionLoad-variable* SessionLoadPost autocmd.txt /*SessionLoadPost* +SessionLoadPre autocmd.txt /*SessionLoadPre* SessionWritePost autocmd.txt /*SessionWritePost* ShellCmdPost autocmd.txt /*ShellCmdPost* ShellFilterPost autocmd.txt /*ShellFilterPost* @@ -6194,6 +6213,7 @@ added-8.1 version8.txt /*added-8.1* added-8.2 version8.txt /*added-8.2* added-9.1 version9.txt /*added-9.1* added-9.2 version9.txt /*added-9.2* +added-9.3 version9.txt /*added-9.3* added-BeOS version5.txt /*added-BeOS* added-Mac version5.txt /*added-Mac* added-VMS version5.txt /*added-VMS* @@ -6210,6 +6230,7 @@ alt-input debugger.txt /*alt-input* alternate-file editing.txt /*alternate-file* amiga-window starting.txt /*amiga-window* and() builtin.txt /*and()* +android builtin.txt /*android* anonymous-function eval.txt /*anonymous-function* ant.vim syntax.txt /*ant.vim* ap motion.txt /*ap* @@ -6309,6 +6330,8 @@ b:changelog_name filetype.txt /*b:changelog_name* b:clojure_syntax_keywords syntax.txt /*b:clojure_syntax_keywords* b:clojure_syntax_without_core_keywords syntax.txt /*b:clojure_syntax_without_core_keywords* b:current_syntax-variable syntax.txt /*b:current_syntax-variable* +b:hare_indent_case ft_hare.txt /*b:hare_indent_case* +b:hare_indent_match_switch ft_hare.txt /*b:hare_indent_match_switch* b:lf_shell_syntax syntax.txt /*b:lf_shell_syntax* b:netrw_lastfile pi_netrw.txt /*b:netrw_lastfile* b:rust_cargo_avoid_whole_workspace ft_rust.txt /*b:rust_cargo_avoid_whole_workspace* @@ -6408,6 +6431,7 @@ bug-fixes-8 version8.txt /*bug-fixes-8* bug-fixes-9 version9.txt /*bug-fixes-9* bug-fixes-9.1 version9.txt /*bug-fixes-9.1* bug-fixes-9.2 version9.txt /*bug-fixes-9.2* +bug-fixes-9.3 version9.txt /*bug-fixes-9.3* bug-reports intro.txt /*bug-reports* bugreport.vim intro.txt /*bugreport.vim* bugs intro.txt /*bugs* @@ -6562,6 +6586,7 @@ ch_evalraw() channel.txt /*ch_evalraw()* ch_getbufnr() channel.txt /*ch_getbufnr()* ch_getjob() channel.txt /*ch_getjob()* ch_info() channel.txt /*ch_info()* +ch_listen() channel.txt /*ch_listen()* ch_log() channel.txt /*ch_log()* ch_logfile() channel.txt /*ch_logfile()* ch_open() channel.txt /*ch_open()* @@ -6596,6 +6621,7 @@ changed-8.1 version8.txt /*changed-8.1* changed-8.2 version8.txt /*changed-8.2* changed-9.1 version9.txt /*changed-9.1* changed-9.2 version9.txt /*changed-9.2* +changed-9.3 version9.txt /*changed-9.3* changelist motion.txt /*changelist* changelog.vim syntax.txt /*changelog.vim* changenr() builtin.txt /*changenr()* @@ -6611,6 +6637,7 @@ channel-demo channel.txt /*channel-demo* channel-drop channel.txt /*channel-drop* channel-functions usr_41.txt /*channel-functions* channel-functions-details channel.txt /*channel-functions-details* +channel-listen-demo channel.txt /*channel-listen-demo* channel-mode channel.txt /*channel-mode* channel-more channel.txt /*channel-more* channel-noblock channel.txt /*channel-noblock* @@ -6691,6 +6718,16 @@ clipboard-autoselectml options.txt /*clipboard-autoselectml* clipboard-autoselectplus options.txt /*clipboard-autoselectplus* clipboard-exclude options.txt /*clipboard-exclude* clipboard-html options.txt /*clipboard-html* +clipboard-providers eval.txt /*clipboard-providers* +clipboard-providers-available eval.txt /*clipboard-providers-available* +clipboard-providers-clipboard eval.txt /*clipboard-providers-clipboard* +clipboard-providers-clipmethod eval.txt /*clipboard-providers-clipmethod* +clipboard-providers-copy eval.txt /*clipboard-providers-copy* +clipboard-providers-define eval.txt /*clipboard-providers-define* +clipboard-providers-no-clipboard eval.txt /*clipboard-providers-no-clipboard* +clipboard-providers-paste eval.txt /*clipboard-providers-paste* +clipboard-providers-plus eval.txt /*clipboard-providers-plus* +clipboard-providers-textlock eval.txt /*clipboard-providers-textlock* clipboard-unnamed options.txt /*clipboard-unnamed* clipboard-unnamedplus options.txt /*clipboard-unnamedplus* clojure-indent indent.txt /*clojure-indent* @@ -6738,6 +6775,7 @@ compile-changes-7 version7.txt /*compile-changes-7* compile-changes-8 version8.txt /*compile-changes-8* compile-changes-9 version9.txt /*compile-changes-9* compile-changes-9.2 version9.txt /*compile-changes-9.2* +compiler-biome quickfix.txt /*compiler-biome* compiler-compaqada ft_ada.txt /*compiler-compaqada* compiler-cppcheck quickfix.txt /*compiler-cppcheck* compiler-decada ft_ada.txt /*compiler-decada* @@ -6755,13 +6793,16 @@ compiler-mypy quickfix.txt /*compiler-mypy* compiler-pandoc quickfix.txt /*compiler-pandoc* compiler-perl quickfix.txt /*compiler-perl* compiler-pylint quickfix.txt /*compiler-pylint* +compiler-pyright quickfix.txt /*compiler-pyright* compiler-pytest quickfix.txt /*compiler-pytest* compiler-pyunit quickfix.txt /*compiler-pyunit* compiler-ruff quickfix.txt /*compiler-ruff* compiler-select quickfix.txt /*compiler-select* compiler-spotbugs quickfix.txt /*compiler-spotbugs* compiler-tex quickfix.txt /*compiler-tex* +compiler-tombi quickfix.txt /*compiler-tombi* compiler-tsc quickfix.txt /*compiler-tsc* +compiler-ty quickfix.txt /*compiler-ty* compiler-typst quickfix.txt /*compiler-typst* compiler-vaxada ft_ada.txt /*compiler-vaxada* compl-current insert.txt /*compl-current* @@ -6796,7 +6837,6 @@ complete_add() builtin.txt /*complete_add()* complete_check() builtin.txt /*complete_check()* complete_info() builtin.txt /*complete_info()* complete_info_mode builtin.txt /*complete_info_mode* -complete_match() builtin.txt /*complete_match()* completed_item-variable eval.txt /*completed_item-variable* completion-functions usr_41.txt /*completion-functions* complex-change change.txt /*complex-change* @@ -6813,6 +6853,7 @@ conversion-server mbyte.txt /*conversion-server* convert-to-HTML syntax.txt /*convert-to-HTML* convert-to-XHTML syntax.txt /*convert-to-XHTML* convert-to-XML syntax.txt /*convert-to-XML* +convert_:function_to_:def vim9.txt /*convert_:function_to_:def* convert_legacy_function_to_vim9 vim9.txt /*convert_legacy_function_to_vim9* copy() builtin.txt /*copy()* copy-diffs diff.txt /*copy-diffs* @@ -6964,6 +7005,7 @@ dav pi_netrw.txt /*dav* davs pi_netrw.txt /*davs* daw motion.txt /*daw* dd change.txt /*dd* +debug-adapter-protocol channel.txt /*debug-adapter-protocol* debug-gcc debug.txt /*debug-gcc* debug-highlight debugger.txt /*debug-highlight* debug-leaks debug.txt /*debug-leaks* @@ -7527,6 +7569,7 @@ ft-fortran-syntax syntax.txt /*ft-fortran-syntax* ft-freebasic-plugin filetype.txt /*ft-freebasic-plugin* ft-freebasic-syntax syntax.txt /*ft-freebasic-syntax* ft-fvwm-syntax syntax.txt /*ft-fvwm-syntax* +ft-gdb-syntax syntax.txt /*ft-gdb-syntax* ft-gdscript-plugin filetype.txt /*ft-gdscript-plugin* ft-gitcommit-plugin filetype.txt /*ft-gitcommit-plugin* ft-gitrebase-plugin filetype.txt /*ft-gitrebase-plugin* @@ -7799,7 +7842,6 @@ g:hare_indent_match_switch ft_hare.txt /*g:hare_indent_match_switch* g:hare_makeprg_params ft_hare.txt /*g:hare_makeprg_params* g:hare_recommended_style ft_hare.txt /*g:hare_recommended_style* g:hare_space_error ft_hare.txt /*g:hare_space_error* -g:hare_symbol_operators ft_hare.txt /*g:hare_symbol_operators* g:help_example_languages helphelp.txt /*g:help_example_languages* g:html_charset_override syntax.txt /*g:html_charset_override* g:html_diff_one_file syntax.txt /*g:html_diff_one_file* @@ -7955,6 +7997,7 @@ g:rustfmt_command ft_rust.txt /*g:rustfmt_command* g:rustfmt_detect_version ft_rust.txt /*g:rustfmt_detect_version* g:rustfmt_emit_files ft_rust.txt /*g:rustfmt_emit_files* g:rustfmt_fail_silently ft_rust.txt /*g:rustfmt_fail_silently* +g:rustfmt_find_toml ft_rust.txt /*g:rustfmt_find_toml* g:rustfmt_options ft_rust.txt /*g:rustfmt_options* g:statusline_winid options.txt /*g:statusline_winid* g:syntax_on syntax.txt /*g:syntax_on* @@ -8054,6 +8097,7 @@ garbagecollect() builtin.txt /*garbagecollect()* gd pattern.txt /*gd* gdb debug.txt /*gdb* gdb-version terminal.txt /*gdb-version* +gdb.vim syntax.txt /*gdb.vim* ge motion.txt /*ge* gender-neutral helphelp.txt /*gender-neutral* generic-function-call vim9.txt /*generic-function-call* @@ -8231,6 +8275,7 @@ gui-vert-scroll gui.txt /*gui-vert-scroll* gui-w32 gui_w32.txt /*gui-w32* gui-w32-cmdargs gui_w32.txt /*gui-w32-cmdargs* gui-w32-dialogs gui_w32.txt /*gui-w32-dialogs* +gui-w32-fullscreen gui_w32.txt /*gui-w32-fullscreen* gui-w32-printing gui_w32.txt /*gui-w32-printing* gui-w32-start gui_w32.txt /*gui-w32-start* gui-w32-title-bar gui_w32.txt /*gui-w32-title-bar* @@ -8291,6 +8336,8 @@ haiku-vimdir os_haiku.txt /*haiku-vimdir* hangul hangulin.txt /*hangul* hangulin.txt hangulin.txt /*hangulin.txt* hare ft_hare.txt /*hare* +hare-folding ft_hare.txt /*hare-folding* +hare-symbol-operators ft_hare.txt /*hare-symbol-operators* hare.vim ft_hare.txt /*hare.vim* has() builtin.txt /*has()* has-patch builtin.txt /*has-patch* @@ -8306,7 +8353,6 @@ help helphelp.txt /*help* help-TOC helphelp.txt /*help-TOC* help-buffer-options helphelp.txt /*help-buffer-options* help-context help.txt /*help-context* -help-curwin tips.txt /*help-curwin* help-notation helphelp.txt /*help-notation* help-summary usr_02.txt /*help-summary* help-tags tags 1 @@ -8597,7 +8643,6 @@ i` motion.txt /*i`* ia64.vim syntax.txt /*ia64.vim* ib motion.txt /*ib* iccf uganda.txt /*iccf* -iccf-donations uganda.txt /*iccf-donations* icon-changed version4.txt /*icon-changed* iconise starting.txt /*iconise* iconize starting.txt /*iconize* @@ -8695,6 +8740,7 @@ instanceof() builtin.txt /*instanceof()* intel-itanium syntax.txt /*intel-itanium* intellimouse-wheel-problems gui_w32.txt /*intellimouse-wheel-problems* interactive-functions usr_41.txt /*interactive-functions* +interface vim9class.txt /*interface* interfaces-5.2 version5.txt /*interfaces-5.2* internal-error message.txt /*internal-error* internal-variables eval.txt /*internal-variables* @@ -8818,6 +8864,7 @@ lcs-eol options.txt /*lcs-eol* lcs-extends options.txt /*lcs-extends* lcs-lead options.txt /*lcs-lead* lcs-leadmultispace options.txt /*lcs-leadmultispace* +lcs-leadtab options.txt /*lcs-leadtab* lcs-multispace options.txt /*lcs-multispace* lcs-nbsp options.txt /*lcs-nbsp* lcs-precedes options.txt /*lcs-precedes* @@ -9602,6 +9649,7 @@ os_risc.txt os_risc.txt /*os_risc.txt* os_unix.txt os_unix.txt /*os_unix.txt* os_vms.txt os_vms.txt /*os_vms.txt* os_win32.txt os_win32.txt /*os_win32.txt* +osc52-install usr_05.txt /*osc52-install* other-features vi_diff.txt /*other-features* out_buf channel.txt /*out_buf* out_cb channel.txt /*out_cb* @@ -9619,12 +9667,14 @@ package-create repeat.txt /*package-create* package-doc repeat.txt /*package-doc* package-documentation repeat.txt /*package-documentation* package-editorconfig usr_05.txt /*package-editorconfig* +package-helpcurwin tips.txt /*package-helpcurwin* package-helptoc helphelp.txt /*package-helptoc* package-hlyank usr_05.txt /*package-hlyank* package-justify usr_25.txt /*package-justify* package-matchit usr_05.txt /*package-matchit* package-nohlsearch usr_05.txt /*package-nohlsearch* package-open eval.txt /*package-open* +package-osc52 usr_05.txt /*package-osc52* package-termdebug terminal.txt /*package-termdebug* package-translate_example repeat.txt /*package-translate_example* package-translation repeat.txt /*package-translation* @@ -9645,9 +9695,11 @@ patches-8.2 version8.txt /*patches-8.2* patches-9 version9.txt /*patches-9* patches-9.1 version9.txt /*patches-9.1* patches-9.2 version9.txt /*patches-9.2* +patches-9.3 version9.txt /*patches-9.3* patches-after-8.2 version9.txt /*patches-after-8.2* patches-after-9.0 version9.txt /*patches-after-9.0* patches-after-9.1 version9.txt /*patches-after-9.1* +patches-after-9.2 version9.txt /*patches-after-9.2* pathshorten() builtin.txt /*pathshorten()* pattern pattern.txt /*pattern* pattern-atoms pattern.txt /*pattern-atoms* @@ -9737,6 +9789,7 @@ popup-mapping popup.txt /*popup-mapping* popup-mask popup.txt /*popup-mask* popup-menu gui.txt /*popup-menu* popup-menu-added version5.txt /*popup-menu-added* +popup-opacity popup.txt /*popup-opacity* popup-position popup.txt /*popup-position* popup-props popup.txt /*popup-props* popup-scrollbar popup.txt /*popup-scrollbar* @@ -9929,6 +9982,7 @@ quake.vim syntax.txt /*quake.vim* quickfix quickfix.txt /*quickfix* quickfix-6 version6.txt /*quickfix-6* quickfix-ID quickfix.txt /*quickfix-ID* +quickfix-biome quickfix.txt /*quickfix-biome* quickfix-buffer quickfix.txt /*quickfix-buffer* quickfix-changedtick quickfix.txt /*quickfix-changedtick* quickfix-context quickfix.txt /*quickfix-context* @@ -9946,6 +10000,7 @@ quickfix-perl quickfix.txt /*quickfix-perl* quickfix-size quickfix.txt /*quickfix-size* quickfix-stack quickfix.txt /*quickfix-stack* quickfix-title quickfix.txt /*quickfix-title* +quickfix-toml quickfix.txt /*quickfix-toml* quickfix-valid quickfix.txt /*quickfix-valid* quickfix-window quickfix.txt /*quickfix-window* quickfix-window-ID quickfix.txt /*quickfix-window-ID* @@ -10013,6 +10068,8 @@ recovery recover.txt /*recovery* recursive_mapping map.txt /*recursive_mapping* redo undo.txt /*redo* redo-register undo.txt /*redo-register* +redraw_listener_add() builtin.txt /*redraw_listener_add()* +redraw_listener_remove() builtin.txt /*redraw_listener_remove()* reduce() builtin.txt /*reduce()* ref intro.txt /*ref* reference intro.txt /*reference* @@ -10021,7 +10078,6 @@ reg_executing() builtin.txt /*reg_executing()* reg_recording() builtin.txt /*reg_recording()* regexp pattern.txt /*regexp* regexp-changes-5.4 version5.txt /*regexp-changes-5.4* -register sponsor.txt /*register* register-faq sponsor.txt /*register-faq* register-functions usr_41.txt /*register-functions* register-variable eval.txt /*register-variable* @@ -10487,6 +10543,7 @@ static-tag tagsrch.txt /*static-tag* status-line windows.txt /*status-line* statusmsg-variable eval.txt /*statusmsg-variable* stl-%! options.txt /*stl-%!* +stl-%@ options.txt /*stl-%@* stl-%{ options.txt /*stl-%{* str2blob() builtin.txt /*str2blob()* str2float() builtin.txt /*str2float()* @@ -10607,6 +10664,7 @@ t_AL term.txt /*t_AL* t_AU term.txt /*t_AU* t_BD term.txt /*t_BD* t_BE term.txt /*t_BE* +t_BS term.txt /*t_BS* t_CF term.txt /*t_CF* t_CS term.txt /*t_CS* t_CTRL-W_. terminal.txt /*t_CTRL-W_.* @@ -10626,6 +10684,7 @@ t_DL term.txt /*t_DL* t_Ds term.txt /*t_Ds* t_EC term.txt /*t_EC* t_EI term.txt /*t_EI* +t_ES term.txt /*t_ES* t_F1 term.txt /*t_F1* t_F2 term.txt /*t_F2* t_F3 term.txt /*t_F3* @@ -10950,6 +11009,7 @@ termcap-cursor-shape term.txt /*termcap-cursor-shape* termcap-options term.txt /*termcap-options* termcap-title term.txt /*termcap-title* termda1-variable eval.txt /*termda1-variable* +termdebug terminal.txt /*termdebug* termdebug-commands terminal.txt /*termdebug-commands* termdebug-communication terminal.txt /*termdebug-communication* termdebug-customizing terminal.txt /*termdebug-customizing* @@ -11023,6 +11083,7 @@ termresponse-variable eval.txt /*termresponse-variable* termrfgresp-variable eval.txt /*termrfgresp-variable* termstyleresp-variable eval.txt /*termstyleresp-variable* termu7resp-variable eval.txt /*termu7resp-variable* +termux builtin.txt /*termux* ternary eval.txt /*ternary* test-functions usr_41.txt /*test-functions* test-functions-details testing.txt /*test-functions-details* @@ -11254,6 +11315,7 @@ v:char eval.txt /*v:char* v:charconvert_from eval.txt /*v:charconvert_from* v:charconvert_to eval.txt /*v:charconvert_to* v:clipmethod eval.txt /*v:clipmethod* +v:clipproviders eval.txt /*v:clipproviders* v:cmdarg eval.txt /*v:cmdarg* v:cmdbang eval.txt /*v:cmdbang* v:collate eval.txt /*v:collate* @@ -11358,6 +11420,7 @@ v:var eval.txt /*v:var* v:version eval.txt /*v:version* v:versionlong eval.txt /*v:versionlong* v:vim_did_enter eval.txt /*v:vim_did_enter* +v:vim_did_init eval.txt /*v:vim_did_init* v:warningmsg eval.txt /*v:warningmsg* v:wayland_display eval.txt /*v:wayland_display* v:windowid eval.txt /*v:windowid* @@ -11514,6 +11577,7 @@ version-8.2 version8.txt /*version-8.2* version-9.0 version9.txt /*version-9.0* version-9.1 version9.txt /*version-9.1* version-9.2 version9.txt /*version-9.2* +version-9.3 version9.txt /*version-9.3* version-variable eval.txt /*version-variable* version4.txt version4.txt /*version4.txt* version5.txt version5.txt /*version5.txt* @@ -11531,6 +11595,7 @@ version8.txt version8.txt /*version8.txt* version9.0 version9.txt /*version9.0* version9.1 version9.txt /*version9.1* version9.2 version9.txt /*version9.2* +version9.3 version9.txt /*version9.3* version9.txt version9.txt /*version9.txt* versionlong-variable eval.txt /*versionlong-variable* vi intro.txt /*vi* @@ -11560,6 +11625,7 @@ vim-9 version9.txt /*vim-9* vim-9.0 version9.txt /*vim-9.0* vim-9.1 version9.txt /*vim-9.1* vim-9.2 version9.txt /*vim-9.2* +vim-9.3 version9.txt /*vim-9.3* vim-additions vi_diff.txt /*vim-additions* vim-announce intro.txt /*vim-announce* vim-arguments starting.txt /*vim-arguments* @@ -11593,6 +11659,7 @@ vim9-access-modes vim9class.txt /*vim9-access-modes* vim9-autoload vim9.txt /*vim9-autoload* vim9-boolean vim9.txt /*vim9-boolean* vim9-class vim9class.txt /*vim9-class* +vim9-class-type vim9.txt /*vim9-class-type* vim9-classes vim9.txt /*vim9-classes* vim9-const vim9.txt /*vim9-const* vim9-curly vim9.txt /*vim9-curly* @@ -11600,14 +11667,18 @@ vim9-debug repeat.txt /*vim9-debug* vim9-declaration vim9.txt /*vim9-declaration* vim9-declarations usr_41.txt /*vim9-declarations* vim9-differences vim9.txt /*vim9-differences* +vim9-enum-type vim9.txt /*vim9-enum-type* +vim9-enumvalue-type vim9.txt /*vim9-enumvalue-type* vim9-export vim9.txt /*vim9-export* vim9-false-true vim9.txt /*vim9-false-true* vim9-final vim9.txt /*vim9-final* vim9-func-declaration vim9.txt /*vim9-func-declaration* +vim9-func-type vim9.txt /*vim9-func-type* vim9-function-defined-later vim9.txt /*vim9-function-defined-later* vim9-gotchas vim9.txt /*vim9-gotchas* vim9-ignored-argument vim9.txt /*vim9-ignored-argument* vim9-import vim9.txt /*vim9-import* +vim9-interface-type vim9.txt /*vim9-interface-type* vim9-lambda vim9.txt /*vim9-lambda* vim9-lambda-arguments vim9.txt /*vim9-lambda-arguments* vim9-line-continuation vim9.txt /*vim9-line-continuation* @@ -11616,15 +11687,19 @@ vim9-mix vim9.txt /*vim9-mix* vim9-namespace vim9.txt /*vim9-namespace* vim9-no-dict-function vim9.txt /*vim9-no-dict-function* vim9-no-shorten vim9.txt /*vim9-no-shorten* +vim9-object-type vim9.txt /*vim9-object-type* +vim9-partial-declaration vim9.txt /*vim9-partial-declaration* vim9-rationale vim9.txt /*vim9-rationale* vim9-reload vim9.txt /*vim9-reload* vim9-s-namespace vim9.txt /*vim9-s-namespace* vim9-scopes vim9.txt /*vim9-scopes* vim9-string-index vim9.txt /*vim9-string-index* +vim9-typealias-type vim9.txt /*vim9-typealias-type* vim9-types vim9.txt /*vim9-types* vim9-unpack-ignore vim9.txt /*vim9-unpack-ignore* vim9-user-command vim9.txt /*vim9-user-command* vim9-variable-arguments vim9.txt /*vim9-variable-arguments* +vim9-white-space vim9.txt /*vim9-white-space* vim9.txt vim9.txt /*vim9.txt* vim9class.txt vim9class.txt /*vim9class.txt* vim9script vim9.txt /*vim9script* @@ -11632,6 +11707,7 @@ vim: options.txt /*vim:* vim_announce intro.txt /*vim_announce* vim_dev intro.txt /*vim_dev* vim_did_enter-variable eval.txt /*vim_did_enter-variable* +vim_did_init-variable eval.txt /*vim_did_init-variable* vim_mac intro.txt /*vim_mac* vim_starting builtin.txt /*vim_starting* vim_use intro.txt /*vim_use* @@ -11703,8 +11779,6 @@ vms-notes os_vms.txt /*vms-notes* vms-problems os_vms.txt /*vms-problems* vms-started os_vms.txt /*vms-started* vms-usage os_vms.txt /*vms-usage* -vote-for-features sponsor.txt /*vote-for-features* -votes-for-changes todo.txt /*votes-for-changes* vreplace-mode insert.txt /*vreplace-mode* vt100-cursor-keys term.txt /*vt100-cursor-keys* vt100-function-keys term.txt /*vt100-function-keys* @@ -11847,6 +11921,7 @@ xattr editing.txt /*xattr* xdg-base-dir starting.txt /*xdg-base-dir* xdg-runtime starting.txt /*xdg-runtime* xdg-vimrc starting.txt /*xdg-vimrc* +xdg.vim starting.txt /*xdg.vim* xf86conf.vim syntax.txt /*xf86conf.vim* xfontset mbyte.txt /*xfontset* xfree-xterm syntax.txt /*xfree-xterm* diff --git a/runtime/doc/tagsrch.txt b/runtime/doc/tagsrch.txt index dcd6f05c..eb2cb1b3 100644 --- a/runtime/doc/tagsrch.txt +++ b/runtime/doc/tagsrch.txt @@ -1,7 +1,7 @@ -*tagsrch.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*tagsrch.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Tags and special searches *tags-and-searches* @@ -872,9 +872,9 @@ Common arguments for the commands above: When excluded, a match is ignored when the line is recognized as a comment (according to 'comments'), or the match is in a C comment (after "//" or inside /* */). Note that a match may be missed if a - line is recognized as a comment, but the comment ends halfway the line. - And if the line is a comment, but it is not recognized (according to - 'comments') a match may be found in it anyway. Example: > + line is recognized as a comment, but the comment ends halfway the + line. And if the line is a comment, but it is not recognized + (according to 'comments') a match may be found in it anyway. Example: > /* comment foobar */ < A match for "foobar" is found, because this line is not recognized as diff --git a/runtime/doc/term.txt b/runtime/doc/term.txt index e2f9b659..7d7466f1 100644 --- a/runtime/doc/term.txt +++ b/runtime/doc/term.txt @@ -1,7 +1,7 @@ -*term.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*term.txt* For Vim version 9.2. Last change: 2026 Mar 04 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Terminal information *terminal-info* @@ -196,8 +196,8 @@ try the entry ":ku=\233A:". Some termcap entries have the entry ":ku=\E[A:". But the Amiga really sends "\233A". On output "\E[" and "\233" are often equivalent, on input they -aren't. You will have to change the termcap entry, or change the key code with -the :set command to fix this. +aren't. You will have to change the termcap entry, or change the key code +with the :set command to fix this. Many cursor key codes start with an . Vim must find out if this is a single hit of the key or the start of a cursor key sequence. It waits @@ -510,6 +510,10 @@ Added by Vim (there are no standard codes for these): |xterm-focus-event| t_fd disable focus-event tracking *t_fd* *'t_fd'* |xterm-focus-event| + t_BS begin synchronized update *t_BS* *'t_BS'* + see 'termsync' + t_ES end synchronized update *t_ES* *'t_ES'* + see 'termsync' Some codes have a start, middle and end part. The start and end are defined by the termcap option, the middle part is text. @@ -528,6 +532,11 @@ t_SH must take one argument: t_RS is sent only if the response to t_RV has been received. It is not used on Mac OS when Terminal.app could be recognized from the termresponse. +The t_BS and t_ES are not stored in the termcap, but are instead set to the +following default values on startup: + t_BS "\033[?2026h" + t_ES "\033[?2026l" + *mouse-reporting* Many terminals can report mouse clicks and some can report mouse movement and dragging. Vim needs to know what codes are being used for this. @@ -1167,7 +1176,8 @@ Mouse clicks can be mapped. The codes for mouse clicks are: The X1 and X2 buttons refer to the extra buttons found on some mice. The 'Microsoft Explorer' mouse has these buttons available to the right thumb. -Currently X1 and X2 only work on Win32 and X11 environments. +Currently, X1 and X2 work only on Win32 and X11 environments, and in terminals +that support xterm-like mouse functionality. Examples: > :noremap diff --git a/runtime/doc/terminal.txt b/runtime/doc/terminal.txt index f7fe3301..b46899ce 100644 --- a/runtime/doc/terminal.txt +++ b/runtime/doc/terminal.txt @@ -1,4 +1,4 @@ -*terminal.txt* For Vim version 9.1. Last change: 2025 Oct 14 +*terminal.txt* For Vim version 9.2. Last change: 2026 Mar 12 VIM REFERENCE MANUAL by Bram Moolenaar @@ -490,8 +490,8 @@ On more recent versions of MS-Windows 10 (beginning with the "October 2018 Update"), winpty is no longer required. On those versions, |:terminal| will use Windows' built-in support for hosting terminal applications, "ConPTY". When ConPTY is in use, there may be rendering artifacts regarding ambiguous-width -characters. If you encounter any such issues, install "winpty". Until the -ConPTY problems have been fixed "winpty" will be preferred. +characters. If you encounter any such issues, install "winpty". ConPTY +support is considered stable with the first release of Windows 11. Environment variables are used to pass information to the running job: VIM_SERVERNAME v:servername @@ -525,10 +525,12 @@ term_dumpdiff({filename}, {filename} [, {options}]) of the first file name. "term_rows" vertical size to use for the terminal, instead of using 'termwinsize', but - respecting the minimal size + respecting the minimal size; valid range + is from 0 to 1000 "term_cols" horizontal size to use for the terminal, instead of using 'termwinsize', but - respecting the minimal size + respecting the minimal size; valid range + is from 0 to 1000 "vertical" split the window vertically "curwin" use the current window, do not split the window; fails if the current buffer @@ -951,9 +953,10 @@ term_start({cmd} [, {options}]) *term_start()* of the command name. "term_rows" vertical size to use for the terminal, instead of using 'termwinsize'; valid - range is from zero to 1000 + range is from 0 to 1000 "term_cols" horizontal size to use for the terminal, - instead of using 'termwinsize' + instead of using 'termwinsize'; valid + range is from 0 to 1000 "vertical" split the window vertically; note that other window position can be defined with command modifiers, such as |:belowright|. @@ -1263,7 +1266,8 @@ Alternatively, press "s" to swap the first and second dump. Do this several times so that you can spot the difference in the context of the text. ============================================================================== -6. Debugging *terminal-debug* *terminal-debugger* *package-termdebug* +6. Debugging *terminal-debug* *terminal-debugger* + *package-termdebug* *termdebug* The Terminal debugging plugin can be used to debug a program with gdb and view the source code in a Vim window. Since this is completely contained inside @@ -1423,11 +1427,25 @@ gdb: `:Arguments` {args} set arguments for the next `:Run` *:Break* set a breakpoint at the cursor position - :Break {position} + :Break [{position}] [thread {nr}] [if {expr}] set a breakpoint at the specified position + if {position} is omitted, use the current file and line + thread {nr} limits the breakpoint to one thread + if {expr} sets a conditional breakpoint + Examples: > + :Break if argc == 1 + :Break 42 thread 3 if x > 10 + :Break main +< *:Tbreak* set a temporary breakpoint at the cursor position - :Tbreak {position} - set a temporary breakpoint at the specified position + :Tbreak [{position}] [thread {nr}] [if {expr}] + like `:Break`, but the breakpoint is deleted after + it is hit once + Examples: > + :Tbreak if argc == 1 + :Tbreak 42 thread 3 if x > 10 + :Tbreak main +< *:Clear* delete the breakpoint at the cursor position *:ToggleBreak* set a breakpoint at the cursor position or delete all breakpoints at the cursor position @@ -1877,7 +1895,7 @@ Contributions for termdebug improvements are welcome. However, it is fairly common that during the development process you need some mechanisms like `echo` statements (or similar) to help you in your job. For this reason, you can set: > - let g:termdebug_config['debug'] = true + let g:termdebug_config['debug'] = v:true < This sets the `DEBUG` variable to `true`, which can be referenced in the source code. An example of its usage follows: > diff --git a/runtime/doc/testing.txt b/runtime/doc/testing.txt index 990bcfb2..ba98e048 100644 --- a/runtime/doc/testing.txt +++ b/runtime/doc/testing.txt @@ -1,4 +1,4 @@ -*testing.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*testing.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/textprop.txt b/runtime/doc/textprop.txt index fbef2284..fbe4231c 100644 --- a/runtime/doc/textprop.txt +++ b/runtime/doc/textprop.txt @@ -1,7 +1,7 @@ -*textprop.txt* For Vim version 9.1. Last change: 2025 Oct 14 +*textprop.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Displaying text with properties attached. *textprop* *text-properties* @@ -141,9 +141,9 @@ prop_add({lnum}, {col}, {props}) the current buffer is used id user defined ID for the property; must be a number, should be positive |E1510|; - when using "text" then "id" must not be - present and will be set automatically to a - negative number; otherwise zero is used + when using "text" then any "id" value is + ignored and a negative number is assigned + automatically; otherwise zero is used *E1305* text text to be displayed before {col}, or above/below the line if {col} is zero; prepend @@ -224,14 +224,9 @@ prop_add({lnum}, {col}, {props}) is difficult to compute). A negative "id" will be chosen and is returned. - Before text properties with text were supported it was - possible to use a negative "id", even though this was very - rare. Now that negative "id"s are reserved for text - properties with text an error is given when using a negative - "id". When a text property with text already exists using a - negative "id" results in *E1293* . If a negative "id" was - used and later a text property with text is added results in - *E1339* . + Negative "id"s are reserved for text properties with "text" + and cannot be used otherwise. Using a negative "id" results + in *E1293* . Can also be used as a |method|: > GetLnum()->prop_add(col, props) diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt index c362bea1..9dde7dc4 100644 --- a/runtime/doc/tips.txt +++ b/runtime/doc/tips.txt @@ -1,7 +1,7 @@ -*tips.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*tips.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Tips and ideas for using Vim *tips* @@ -30,7 +30,7 @@ Executing shell commands in a window |shell-window| Hex editing |hex-editing| Using <> notation in autocommands |autocmd-<>| Highlighting matching parens |match-parens| -Opening help in the current window |help-curwin| +Opening help in the current window |package-helpcurwin| ============================================================================== Editing C programs *C-editing* @@ -544,28 +544,22 @@ A slightly more advanced version is used in the |matchparen| plugin. < ============================================================================== -Opening help in the current window *help-curwin* +Opening help in the current window *package-helpcurwin* -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() - 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 - set buftype=help - endif - return 'help ' .. a:subject - endfunction -< +By default, help is displayed in a split window. In some scenarios, you may +prefer to open the help in the current window. The optional helpcurwin +package makes this possible. Load the package manually, or in your |vimrc|, +with: >vim + packadd helpcurwin +< +After it has loaded: +- The command `:HelpCurwin` {subject} can be used to open help in the current + window. +- If the current window contains a modified buffer, the plugin asks for + confirmation before replacing it. If confirmed, the buffer becomes + hidden |hidden-buffer|. +- The help file, |helpcurwin.txt|, will be available and describes the plugin + in more details. vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt index cdafaf05..beddbea4 100644 --- a/runtime/doc/todo.txt +++ b/runtime/doc/todo.txt @@ -1,4 +1,4 @@ -*todo.txt* For Vim version 9.1. Last change: 2025 Sep 02 +*todo.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -23,9 +23,7 @@ Priority classification: 1 probably not - unclassified - *votes-for-changes* -See |develop.txt| for development plans. You can vote for which items should -be worked on, but only if you sponsor Vim development. See |sponsor|. +See |develop.txt| for development plans. Issues can also be entered online: https://github.com/vim/vim/issues Only use this for bug reports, not for questions! Those belong on the @@ -205,11 +203,8 @@ Popup windows: positioned? PopupNew? Could be used to set some options or move it out of the way. (#5737) However, it may also cause trouble, changing the popup of another plugin. -- Should popup_getoptions() also return the mask? #7774 - Add a way to use popup_menu() synchronously: instead of invoking the callback, return the choice. (Ben Jackson, #6534) -- When using a popup for the info of a completion menu, and there is not - enough space, let the popup overlap with the menu. (#4544) - Implement flip option. - Make redrawing more efficient and avoid flicker: - put popup menu also in popup_mask? @@ -294,23 +289,9 @@ Terminal emulator window: - When 'encoding' is not utf-8, or the job is using another encoding, setup conversions. -Patch adds showcmd() function #11708 - -Cursor is after the end of the line: #12137. - -Crash when a variable is removed while listing variables (Issue #11435) - -Problem with Visual highlight when 'linebreak' and 'showbreak' are set. -#11272 - -'cindent': compound literal indented wrong. Check for " = " before "{"? -#12491 - GUI Scroll test fails on FreeBSD when using Motif. See FIXME in Test_scrollbars in src/test_gui.vim -Support dark mode for MS-Windows: #12282 - Remote command escapes single quote with backslash, should be doubling the single quote in vim_strsave_escaped_ext() #12202. @@ -329,8 +310,6 @@ combining characters. (Ron Aaron, 2023 Apr 10) Add BufDeletePost. #11041 -Add winid arg to col() and charcol() #11466 (request #11461) - 'switchbuf' set to "newtab" does not work for ":cfirst" when in the quickfix window. #12436 @@ -349,14 +328,6 @@ since it's an unusual situation. noeol:¡ eof:CTRL-Z -Test property disappears when using CR twice in a row. OK when some text was -entered. (#11151) - -Add 'keywordprg' to various ftplugin files: -https://github.com/vim/vim/pull/5566 - -PR #11579 to add visualtext(), return Visually selected text. - PR #11860: Add more info to 'colorcolumn': display a character and highlight for each separate entry. Disadvantage: option value gets very complicated with multiple entries, e.g. every 8 columns. @@ -367,12 +338,6 @@ Stray characters in the shell #11719, caused by requesting a response for: - Whether kitty keyboard protocol is active Can we not request XT key sequences, or reduce them drastically? -Issue #10512: Dynamic loading broken with Perl 5.36 -Damien has a patch (2022 Dec 4) - -Request #11965: Allow several "%=" items in 'statusline', makes it possible -to have text in the center. - Add some kind of ":whathappend" command and functions to make visible what the last few typed keys and executed commands are. To be used when the user wonders what went wrong. Could also be used for statistics #12046. @@ -382,10 +347,6 @@ wonders what went wrong. Could also be used for statistics #12046. - executed command lines - with more verbosity: what scripts/functions/autocommands were executed -NFA regexp does not handle composing characters well: #10286 - [ɔ̃] matches both ɔ and ɔ̃ - \(ɔ\|ɔ̃\) matches ɔ and not ɔ̃ - Is there a way to make 'autowriteall' make a clean exit when the xterm is closed? (Dennis Nazic says files are preserved, okt 28). Perhaps handle TERM like HUP? @@ -412,15 +373,10 @@ Better terminal emulator support: add an optional additional one. So that "xterm-kitty" can first load "xterm" and then add "kitty" entries. -Using "A" and "o" in manually created fold (in empty buffer) does not behave -consistently (James McCoy, #10698) - In a timer callback, when using ":echo" and then input() the message is overwritten. Could use ":echowin" and call redraw_cmd() in get_user_input(). #11299 -Syntax include problem: #11277. Related to Patch 8.2.2761 - To avoid flicker: add an option that when a screen clear is requested, instead of clearing it draws everything and uses "clear to end of line" for every line. Resetting 't_ut' already causes this? @@ -446,18 +402,6 @@ Idea: when typing ":e /some/dir/" and "dir" does not exist, highlight in red. initialization to figure out the default value from 'shell'. Add a test for this. -Add a diff() function to use the built-in diff support in a script. -#12321 Is the returned value in the right form now? - -Support translations for plugins: #11637 PR: #12447 -- Need a tool like xgettext for Vim script, generates a .pot file. - Need the equivalent of _() and N_(), perhaps TR() and TRN(). -- Instructions for how to create .po files and translate. -- Script or Makefile to generate .mo files. -- Instructions and perhaps a script to install the .mo files in the right - place. -- Add variant of gettext() that takes a package name. - With concealed text mouse click doesn't put the cursor in the right position. (Herb Sitz) Fix by Christian Brabandt, 2011 Jun 16. Doesn't work properly, need to make the change in where RET_WIN_BUF_CHARTABSIZE() is called. @@ -473,9 +417,6 @@ Information for a specific terminal (e.g. gnome, tmux, konsole, alacritty) is spread out. Make a section with copy/paste examples of script and pointers to more information. -Request to use "." for the cursor column in search pattern \%<.c and \%<.v. -(#8179) - ":filter set termcap" only filters terminal codes, not keys. (#9297) Add an option to restrict 'incsearch' to not scroll the view. (Tavis Ormandy) @@ -494,8 +435,6 @@ New English spell files also have very slow suggestions. When 'spelloptions' is "camel" then zG doesn't work on some words. (Gary Johnson, 17 Oct 2022) -SpellCap doesn't show below a closed fold. #12420 - 'cdpath' problems: - Adding "~" to 'cdpath' doesn't work for completion? (Davido, 2013 Aug 19) - Problem with 'cdpath' on MS-Windows when a directory is equal to $HOME. @@ -519,8 +458,6 @@ there is a match do not scan the directory (possibly speeds up :find a lot). globpath() does not use 'wildignorecase' at all? (related to #8350) -mksession uses :buffer instead of :edit in one place but not another. #10629 - Add 'termguiattr' option, use "gui=" attributes in the terminal? Would work with 'termguicolors'. #1740 @@ -538,9 +475,6 @@ when redirecting to a local variable (function or script) storing the value won't work. At least give an error. Is there a way to make it work? #10616 -Completion for ":runtime" should show valid values, not what's in the current -directory. (#11447) - Add a "description" property to mappings. #12205 Add an option to start_timer() to return from the input loop with K_IGNORE. @@ -556,9 +490,6 @@ Try setting a color then request the current color, like using t_u7. Add a v:register_used variable, which has the name of the register used for the last command, e.g. put. #12003 -Make the jumplist behave like a tag stack. (#7738) Should there be a more -time bound navigation, like with undo? - For testing, make a copy of ml_line_ptr instead of pointing it into the data block, so that valgrind can do out of bounds check. Set ML_LINE_DIRTY flag or add ML_LINE_ALLOCED. @@ -615,7 +546,6 @@ Add the <=> (spaceship) operator and "cond ?< expr ?= expr ?> expr" let res = left < right ? lower : left == right ? equal : upper by: let res = GetLeftFunc() <=> GetRightFunc() ?< lower ?= equal ?> upper -Patch to make :q work with local arglist. (Christian Brabandt, #6286) Why does Test_invalid_sid() not work in the GUI? @@ -805,28 +735,6 @@ Window size changes after closing a tab. (#4741) Problem with colors in terminal window. (Jason Franklin, 2019 May 12) -Color schemes: -NOTE: modernizing the default colorschemes _AND_ introducing new ones is now -a project in its own right: https://github.com/vim/colorschemes. Feel free to -reach out if you want to lend a hand. -- Lifepillar: Updated/cleaned up color schemes: - https://github.com/lifepillar/vim8-colorschemes. -- Include a few color schemes, based on popularity: - - http://www.vim.org/scripts/script_search_results.php?keywords=&script_type=color+scheme&order_by=rating&direction=descending&search=search -http://vimawesome.com/?q=tag:color-scheme -- Use names that indicate their appearance (Christian Brabandt, 2017 Aug 3) - - monokai - Xia Crusoe (2017 Aug 4) - - seoul256 - Christian Brabandt (2017 Aug 3) - - gruvbox - Christian Brabandt (2017 Aug 3) (simplified version from - Lifepillar, 2018 Jan 22, #2573) - - janah - Marco Hinz (2017 Aug 4) - - apprentice - Romain Lafourcade (2017 Aug 6) remarks about help file #1964 -- Suggested by Hiroki Kokubun: - - [Iceberg](https://github.com/cocopon/iceberg.vim) (my one) - - [hybrid](https://github.com/w0ng/vim-hybrid) -- Include solarized color scheme?, it does not support termguicolors. - - Sanitized version of pablo (Lifepillar, 2017 Nov 21) - Bug: "vipgw" does not put cursor back where it belongs. (Jason Franklin, 2019 Mar 5) @@ -871,15 +779,13 @@ balloonexpr() on MS-Windows GUI doesn't handle accented chars? (nivaemail, 2018 Sep 14) More warnings from static analysis: -https://lgtm.com/projects/g/vim/vim/alerts/?mode=list +https://lgtm.com/projects/g/vim/vim/alerts/?mode=list (URL no longer resolves) Not existing directory in CDPATH leads to two shell calls. (#4525) Use dict_iterate_start() / dict_iterate_next() instead of relying on the internals of the dict structure. -nvo-mode mapping works on Windows, not on Linux. (#3678) - Redo only remembers the last change. Could use "{count}g." to redo an older change. How does the user know which change? At least have a way to list them: ":repeats". Add to history, like search history and command line history. @@ -1073,8 +979,6 @@ CmdlineEnter. (xtal8, 2017 Oct 30, #2263) Add some way to get the nested state. Although CmdwinEnter is obviously always nested. -matchit hasn't been maintained for a long time. #955. - Problem with 'delcombine'. (agguser, 2017 Nov 10, #2313) 'delcombine' does not work for the command line. (Tony Mechelynck, 2009 Jul @@ -5786,7 +5690,6 @@ Argument list: Registers: -8 Don't display empty registers with ":display". (Etienne) 8 Add put command that overwrites existing text. Should also work for blocks. Useful to move text around in a table. Works like using "R ^R r" for every line. diff --git a/runtime/doc/uganda.txt b/runtime/doc/uganda.txt index 1abc2bd3..db0cd366 100644 --- a/runtime/doc/uganda.txt +++ b/runtime/doc/uganda.txt @@ -1,23 +1,35 @@ -*uganda.txt* For Vim version 9.1. Last change: 2025 Aug 10 +*uganda.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *uganda* *Uganda* *copying* *copyright* *license* SUMMARY - *iccf* *ICCF* + *Kuwasha* Vim is Charityware. You can use and copy it as much as you like, but you are encouraged to make a donation for needy children in Uganda. Please see |kcc| -below or visit the ICCF web site, available at these URLs: +below or visit the Kuwasha web site, available at the following URL: - https://iccf-holland.org/ - https://www.vim.org/iccf/ - https://www.iccf.nl/ + https://www.kuwasha.net You can also sponsor the development of Vim, see |sponsor|. The money goes to Uganda anyway. + *iccf* *ICCF* +ICCF Holland and Kuwasha~ + +|Bram| Moolenaar's charity, ICCF Holland, has long supported the education of +children in Uganda through the Kibaale Children's Centre. Following Bram's +passing in 2023, ICCF Holland transferred all activities to its sister charity +Kuwasha in Canada and dissolved at the end of 2025. + +Donations from Vim users are still welcome and will continue to go directly to +Uganda. To continue supporting this cause, please send contributions to +Kuwasha. + +License~ + The Open Publication License applies to the Vim documentation, see |manual-copyright|. @@ -53,12 +65,14 @@ II) It is allowed to distribute a modified (or extended) version of Vim, maintainer will do with your changes and under what license they will be distributed is negotiable. If there has been no negotiation then this license, or a later version, also applies to your changes. - The current maintainers are listed here: https://github.com/orgs/vim/people. - If this changes it will be announced in appropriate places (most likely - vim.sf.net, www.vim.org and/or comp.editors). When it is completely - impossible to contact the maintainer, the obligation to send him - your changes ceases. Once the maintainer has confirmed that he has - received your changes they will not have to be sent again. + The current maintainers are listed here: + https://github.com/orgs/vim/people + If this changes it will be announced in appropriate places (most + likely vim.sf.net, www.vim.org and/or comp.editors). When it is + completely impossible to contact the maintainer, the obligation to + send him your changes ceases. Once the maintainer has confirmed + that he has received your changes they will not have to be sent + again. b) If you have received a modified Vim that was distributed as mentioned under a) you are allowed to further distribute it unmodified, as mentioned at I). If you make additional changes the @@ -185,84 +199,43 @@ medical help. Since 2020 a maternity ward was added and 24/7 service is available. When needed, transport to a hospital is offered. Immunization programs are carried out and help is provided when an epidemic is breaking out (measles and cholera have been a problem). - *donate* -Summer 1994 to summer 1995 I spent a whole year at the centre, working as a -volunteer. I have helped to expand the centre and worked in the area of water -and sanitation. I learned that the help that the KCC provides really helps. -When I came back to Holland, I wanted to continue supporting KCC. To do this -I'm raising funds and organizing the sponsorship program. Please consider one -of these possibilities: - -1. Sponsor a child in primary school: 17 euro a month (or more). -2. Sponsor a child in secondary school: 25 euro a month (or more). -3. Sponsor the clinic: Any amount a month or quarter -4. A one-time donation - -Compared with other organizations that do child sponsorship the amounts are -very low. This is because the money goes directly to the centre. Less than -5% is used for administration. This is possible because this is a small -organization that works with volunteers. If you would like to sponsor a -child, you should have the intention to do this for at least one year. - -How do you know that the money will be spent right? First of all you have my -personal guarantee as the author of Vim. I trust the people that are working -at the centre, I know them personally. Furthermore, the centre has been + +Summer 1994 to summer 1995 Bram spent a whole year at the centre, working as a +volunteer. Bram helped to expand the centre and worked in the area of water +and sanitation. Bram learned that the help that the KCC provides really +helps. When Bram came back to Holland, he wanted to continue supporting KCC. +To do this he has been raising funds and organizing the sponsorship program. + +How do you know that the money will be spent right? First of all you have the +personal guarantee of Bram as the author of Vim, who knew the people working +at the centre personally. Furthermore, the centre has been co-sponsored and inspected by World Vision, Save the Children Fund and is now -under the supervision of Pacific Academy Outreach Society. The centre is -visited about once a year to check the progress (at our own cost). I have -visited the centre myself many times, starting in 1993. The visit reports are -on the ICCF web site. +under the supervision of Pacific Academy Outreach Society. Bram has +visited the centre many times, starting in 1993. The visit reports are +have been shared on the ICCF web site (may no longer be available). -If you have any further questions, send e-mail: . +If you have any further questions, send an e-mail: info@kuwasha.net. The address of the centre is: Kibaale Children's Centre p.o. box 1658 Masaka, Uganda, East Africa -Sending money: *iccf-donations* - -Check the ICCF web site for the latest information! See |iccf| for the URL. - + *donate* +Sending money: -USA: The methods mentioned below can be used. - If you must send a check send it to our Canadian partner: - https://www.kuwasha.net/ +Check the Kuwasha web site for the latest information! -Canada: Contact Kuwasha in Surrey, Canada. They take care of the - Canadian sponsors for the children in Kibaale. Kuwasha - forwards 100% of the money to the project in Uganda. You can - send them a one time donation directly. Look on their site for information about sponsorship: - https://www.kuwasha.net/ + https://www.kuwasha.net/ If you make a donation to Kuwasha you will receive a tax receipt which can be submitted with your tax return. -Holland: Transfer to the account of "Stichting ICCF Holland" in - Amersfoort. This will allow for tax deduction if you live in - Holland. ING bank, IBAN: NL95 INGB 0004 5487 74 - -Germany: It is possible to make donations that allow for a tax return. - Check the ICCF web site for the latest information: - https://iccf-holland.org/germany.html - -Europe: Use a bank transfer if possible. See "Others" below for the - swift code and IBAN number. - Any other method should work. Ask for information about - sponsorship. - Credit Card: You can use PayPal to send money with a Credit card. This is the most widely used Internet based payment system. It's really simple to use. Use this link to find more info: https://www.paypal.com/en_US/mrb/pal=XAC62PML3GF8Q The e-mail address for sending the money to is: - Bram@iccf-holland.org - -Others: Transfer to this account if possible: - ING bank: IBAN: NL95 INGB 0004 5487 74 - Swift code: INGBNL2A - under the name "stichting ICCF Holland", Amersfoort - Checks are not accepted. - + info@kuwasha.net vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/undo.txt b/runtime/doc/undo.txt index e8a0417e..c32cbe03 100644 --- a/runtime/doc/undo.txt +++ b/runtime/doc/undo.txt @@ -1,4 +1,4 @@ -*undo.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*undo.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar diff --git a/runtime/doc/userfunc.txt b/runtime/doc/userfunc.txt index 0f008446..6388d12e 100644 --- a/runtime/doc/userfunc.txt +++ b/runtime/doc/userfunc.txt @@ -1,4 +1,4 @@ -*userfunc.txt* For Vim version 9.1. Last change: 2025 Oct 27 +*userfunc.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -80,11 +80,11 @@ See |:verbose-cmd| for more information. matching |:endfunction|. *E1267* The name must be made of alphanumeric characters and - '_', and must start with a capital or "s:" (see - above). Note that using "b:" or "g:" is not allowed. - (since patch 7.4.260 E884 is given if the function - name has a colon in the name, e.g. for "foo:bar()". - Before that patch no error was given). + '_' and must start with a capital or "s:" (see above). + Note that using "b:", "l:", etc. is not allowed (since + patch 7.4.260 E884 is given if the function name has a + colon, e.g. for "foo:bar()"), while a leading "g:" is + skipped and still requires a following capital letter. {name} can also be a |Dictionary| entry that is a |Funcref|: > @@ -189,9 +189,9 @@ See |:verbose-cmd| for more information. With the ! there is no error if the function does not exist. *:retu* *:return* *E133* -:retu[rn] [expr] Return from a function. When "[expr]" is given, it is +:retu[rn] [expr] Return from a function. When [expr] is given, it is evaluated and returned as the result of the function. - If "[expr]" is not given, the number 0 is returned. + If [expr] is not given, the number 0 is returned. When a function ends without an explicit ":return", the number 0 is returned. diff --git a/runtime/doc/usr_01.txt b/runtime/doc/usr_01.txt index 88d49136..131fdb8d 100644 --- a/runtime/doc/usr_01.txt +++ b/runtime/doc/usr_01.txt @@ -1,7 +1,7 @@ -*usr_01.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_01.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar About the manuals @@ -191,7 +191,7 @@ manual. Not only by providing literal text, but also by setting the tone and style. If you make money through selling the manuals, you are strongly encouraged to -donate part of the profit to help AIDS victims in Uganda. See |iccf|. +donate part of the profit to help AIDS victims in Uganda. See |Kuwasha|. ============================================================================== diff --git a/runtime/doc/usr_02.txt b/runtime/doc/usr_02.txt index 6bb860fb..4f83a8f5 100644 --- a/runtime/doc/usr_02.txt +++ b/runtime/doc/usr_02.txt @@ -1,7 +1,7 @@ -*usr_02.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_02.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar The first steps in Vim @@ -522,8 +522,8 @@ Summary: *help-summary* > < You can see the user guide topics |03.9| and |usr_27.txt| in the introduction. -3) Options are enclosed in single apostrophes. To go to the help topic for the - list option: > +3) Options are enclosed in single apostrophes. To go to the help topic for + the list option: > :help 'list' < If you only know you are looking for a certain option, you can also do: > :help options.txt diff --git a/runtime/doc/usr_03.txt b/runtime/doc/usr_03.txt index c5b5fe95..5da19697 100644 --- a/runtime/doc/usr_03.txt +++ b/runtime/doc/usr_03.txt @@ -1,7 +1,7 @@ -*usr_03.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_03.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Moving around diff --git a/runtime/doc/usr_04.txt b/runtime/doc/usr_04.txt index 60fb09a2..f6580738 100644 --- a/runtime/doc/usr_04.txt +++ b/runtime/doc/usr_04.txt @@ -1,7 +1,7 @@ -*usr_04.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_04.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Making small changes diff --git a/runtime/doc/usr_05.txt b/runtime/doc/usr_05.txt index 1be470e1..56e7fb9e 100644 --- a/runtime/doc/usr_05.txt +++ b/runtime/doc/usr_05.txt @@ -1,7 +1,7 @@ -*usr_05.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_05.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Set your settings @@ -338,8 +338,8 @@ This only works in a Vim script file, not when typing commands at the command line. > - command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ | diffthis - \ | wincmd p | diffthis + command DiffOrig vert new | set bt=nofile | r ++edit # | 0d_ + \ | diffthis | wincmd p | diffthis This adds the ":DiffOrig" command. Use this in a modified buffer to see the differences with the file it was loaded from. See |diff| and |:DiffOrig|. @@ -399,13 +399,17 @@ The ":map" command (with no arguments) lists your current mappings. At least the ones for Normal mode. More about mappings in section |40.1|. ============================================================================== -*05.5* Adding a package *add-package* *matchit-install* *package-matchit* +*05.5* Adding a package *add-package* A package is a set of files that you can add to Vim. There are two kinds of packages: optional and automatically loaded on startup. The Vim distribution comes with a few packages that you can optionally use. -For example, the matchit plugin. This plugin makes the "%" command jump to + +------------------------------------------------------------------------------ +Adding the matchit package *matchit-install* *package-matchit* +------------------------------------------------------------------------------ +For example, the matchit package This plugin makes the "%" command jump to matching HTML tags, if/else/endif in Vim scripts, etc. Very useful, although it's not backwards compatible (that's why it is not enabled by default). @@ -434,7 +438,9 @@ an archive or as a repository. For an archive you can follow these steps: Here "fancytext" is the name of the package, it can be anything else. +------------------------------------------------------------------------------ Adding the editorconfig package *editorconfig-install* *package-editorconfig* +------------------------------------------------------------------------------ Similar to the matchit package, to load the distributed editorconfig plugin when Vim starts, add the following line to your vimrc file: > @@ -444,7 +450,9 @@ After restarting your Vim, the plugin is active and you can read about it at: > :h editorconfig.txt +------------------------------------------------------------------------------ Adding the comment package *comment-install* *package-comment* +------------------------------------------------------------------------------ Load the plugin with this command: > packadd comment @@ -457,7 +465,9 @@ the package loaded. Once the package is loaded, read about it at: > :h comment.txt +------------------------------------------------------------------------------ Adding the nohlsearch package *nohlsearch-install* *package-nohlsearch* +------------------------------------------------------------------------------ Load the plugin with this command: > packadd nohlsearch @@ -471,7 +481,9 @@ To disable the effect of the plugin after it has been loaded: > au! nohlsearch < +------------------------------------------------------------------------------ Adding the highlight-yank package *hlyank-install* *package-hlyank* +------------------------------------------------------------------------------ Load the plugin with this command: > packadd hlyank @@ -497,6 +509,20 @@ To highlight in visual mode, use: > To disable the effect of the plugin after it has been loaded: > au! hlyank +------------------------------------------------------------------------------ +Adding the osc52 package *osc52-install* *package-osc52* +------------------------------------------------------------------------------ + +Load the plugin with this command: > + packadd osc52 +< +The osc52.vim package provides support for the OSC 52 terminal command, which +allows an application to access the clipboard by communicating directly with +your terminal. + +Once the package is loaded, read about it at: > + :h osc52.txt + More information about packages can be found here: |packages|. ============================================================================== @@ -539,7 +565,8 @@ when you use Vim. There are only two steps for adding a global plugin: GETTING A GLOBAL PLUGIN Where can you find plugins? -- Some are always loaded, you can see them in the directory $VIMRUNTIME/plugin. +- Some are always loaded, you can see them in the directory + $VIMRUNTIME/plugin. - Some come with Vim. You can find them in the directory $VIMRUNTIME/macros and its sub-directories and under $VIM/vimfiles/pack/dist/opt/. - Download from the net. There is a large collection on http://www.vim.org. diff --git a/runtime/doc/usr_06.txt b/runtime/doc/usr_06.txt index d84444db..cea2b616 100644 --- a/runtime/doc/usr_06.txt +++ b/runtime/doc/usr_06.txt @@ -1,7 +1,7 @@ -*usr_06.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_06.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Using syntax highlighting diff --git a/runtime/doc/usr_07.txt b/runtime/doc/usr_07.txt index 2ac30ec2..57c53a1b 100644 --- a/runtime/doc/usr_07.txt +++ b/runtime/doc/usr_07.txt @@ -1,7 +1,7 @@ -*usr_07.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_07.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Editing more than one file diff --git a/runtime/doc/usr_08.txt b/runtime/doc/usr_08.txt index 1237c363..b904e5c7 100644 --- a/runtime/doc/usr_08.txt +++ b/runtime/doc/usr_08.txt @@ -1,7 +1,7 @@ -*usr_08.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_08.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Splitting windows @@ -444,7 +444,8 @@ To go the other way use: > [c -Prepended a count to jump further away. +Prepend a count to jump further away. Thus "4]c" jumps to the fourth next +change, and "3[c" jumps to the third previous change. REMOVING CHANGES diff --git a/runtime/doc/usr_09.txt b/runtime/doc/usr_09.txt index 666dbd4e..7c81a6fa 100644 --- a/runtime/doc/usr_09.txt +++ b/runtime/doc/usr_09.txt @@ -1,7 +1,7 @@ -*usr_09.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_09.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Using the GUI @@ -132,8 +132,8 @@ select text in a standard manner. The X Window system also has a standard system for using the mouse. Unfortunately, these two standards are not the same. Fortunately, you can customize Vim. You can make the behavior of the mouse -work like an X Window system mouse or a Microsoft Windows mouse. The following -command makes the mouse behave like an X Window mouse: > +work like an X Window system mouse or a Microsoft Windows mouse. The +following command makes the mouse behave like an X Window mouse: > :behave xterm diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt index ebf4bab4..72738d3c 100644 --- a/runtime/doc/usr_10.txt +++ b/runtime/doc/usr_10.txt @@ -1,7 +1,7 @@ -*usr_10.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_10.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Making big changes @@ -296,8 +296,8 @@ five lines before the last line in the file. USING MARKS -Instead of figuring out the line numbers of certain positions, remembering them -and typing them in a range, you can use marks. +Instead of figuring out the line numbers of certain positions, remembering +them and typing them in a range, you can use marks. Place the marks as mentioned in chapter 3. For example, use "mt" to mark the top of an area and "mb" to mark the bottom. Then you can use this range to specify the lines between the marks (including the lines with the marks): > @@ -736,9 +736,10 @@ of the program replaces these lines. line 44 line 55 last line last line -The "!!" command filters the current line through a filter. In Unix the "date" -command prints the current time and date. "!!date" replaces the current -line with the output of "date". This is useful to add a timestamp to a file. +The "!!" command filters the current line through a filter. In Unix the +"date" command prints the current time and date. "!!date" replaces the +current line with the output of "date". This is useful to add a timestamp to +a file. Note: There is a difference between "!cmd" (e.g. using it without any file range) and "{range}!cmd". While the former will simply execute the external diff --git a/runtime/doc/usr_11.txt b/runtime/doc/usr_11.txt index f33daf68..5a5ba59a 100644 --- a/runtime/doc/usr_11.txt +++ b/runtime/doc/usr_11.txt @@ -1,7 +1,7 @@ -*usr_11.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_11.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Recovering from a crash diff --git a/runtime/doc/usr_12.txt b/runtime/doc/usr_12.txt index 4ca4a8c2..bc90e8e6 100644 --- a/runtime/doc/usr_12.txt +++ b/runtime/doc/usr_12.txt @@ -1,7 +1,7 @@ -*usr_12.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_12.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Clever tricks diff --git a/runtime/doc/usr_20.txt b/runtime/doc/usr_20.txt index 7bd2faa3..2a283954 100644 --- a/runtime/doc/usr_20.txt +++ b/runtime/doc/usr_20.txt @@ -1,7 +1,7 @@ -*usr_20.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_20.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Typing command-line commands quickly diff --git a/runtime/doc/usr_21.txt b/runtime/doc/usr_21.txt index 8621887a..56835256 100644 --- a/runtime/doc/usr_21.txt +++ b/runtime/doc/usr_21.txt @@ -1,7 +1,7 @@ -*usr_21.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_21.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Go away and come back diff --git a/runtime/doc/usr_22.txt b/runtime/doc/usr_22.txt index d03cb53f..0740987c 100644 --- a/runtime/doc/usr_22.txt +++ b/runtime/doc/usr_22.txt @@ -1,7 +1,7 @@ -*usr_22.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_22.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Finding the file to edit @@ -30,15 +30,15 @@ Vim has a plugin that makes it possible to edit a directory. Try this: > Through the magic of autocommands and Vim scripts, the window will be filled with the contents of the directory. It looks like this (slightly cleaned up -so that it fits within 80 chars): > +so that it fits within 78 chars): > - " =========================================================================== - " Netrw Directory Listing (netrw v180) + " ========================================================================== + " Netrw Directory Listing (netrw v184) " /path/to/vim/runtime/doc " Sorted by name " Sort sequence: [\/]$,*,\(\.bak\|\~\|\.o\|\.h\|\.info\|\.swp\)[*@]\=$ " Quick Help: :help -:go up dir D:delete R:rename s:sort-by x:special - " =========================================================================== + " ========================================================================== ../ ./ check/ @@ -51,15 +51,12 @@ so that it fits within 80 chars): > You can see these items: -1. The name of the browsing tool and its version number -2. The name of the browsing directory -3. The method of sorting (may be by name, time, or size) -4. How names are to be sorted (directories first, then *.h files, - *.c files, etc) -5. How to get help (use the key), and an abbreviated listing - of available commands -6. A listing of files, including "../", which allows one to list - the parent directory. +1. The name of the browsing tool and its version number +2. The name of the browsing directory +3. The method of sorting (may be by name, time, or size) +4. How names are to be sorted (directories first, then by extension, etc.) +5. How to get help (the key), and an abridged list of available commands +6. A listing of files, including "../" (it will list the parent directory). If you have syntax highlighting enabled, the different parts are highlighted so as to make it easier to spot them. @@ -76,76 +73,66 @@ higher. Pressing "-" does the same thing, without the need to move to the "../" item first. You can press 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 - - MAPS netrw-maps - .............Help.......................................|netrw-help| - .............Browsing...................................|netrw-cr| - ............Deleting Files or Directories..............|netrw-delete| - -................Going Up...................................|netrw--| - a................Hiding Files or Directories................|netrw-a| - mb...............Bookmarking a Directory....................|netrw-mb| - gb...............Changing to a Bookmarked Directory.........|netrw-gb| - cd...............Make Browsing Directory The Current Dir....|netrw-c| - d................Make A New Directory.......................|netrw-d| - D................Deleting Files or Directories..............|netrw-D| - ............Edit File/Directory Hiding List............|netrw-ctrl-h| - i................Change Listing Style.......................|netrw-i| - ............Refreshing the Listing.....................|netrw-ctrl-l| - o................Browsing with a Horizontal Split...........|netrw-o| - p................Use Preview Window.........................|netrw-p| - P................Edit in Previous Window....................|netrw-p| - q................Listing Bookmarks and History..............|netrw-qb| - r................Reversing Sorting Order....................|netrw-r| -< (etc) - +browser. This is what you get: +> + QUICK HELP netrw-quickhelp + (Use ctrl-] to select a topic) + Intro to Browsing...............................netrw-intro-browse + Quick Reference: Maps.........................netrw-quickmap + Quick Reference: Commands.....................netrw-browse-cmds +< The key thus brings you to a netrw directory browsing contents help page. It's a regular help page; use the usual |CTRL-]| to jump to tagged help items -and |CTRL-O| to jump back. - -To select files for display and editing: (with the cursor is atop a filename) - - Open the file in the current window. |netrw-cr| - o Horizontally split window and display file |netrw-o| - v Vertically split window and display file |netrw-v| - p Use the |preview-window| |netrw-p| - P Edit in the previous window |netrw-P| - t Open file in a new tab |netrw-t| - +and |CTRL-O| to jump back. So, if you CTRL-] on |netrw-quickmap| you will +jump to this: +> + netrw-quickmap netrw-quickmaps + QUICK REFERENCE: MAPS netrw-browse-maps + + --- ----------------- ---- + Map Quick Explanation Link + --- ----------------- ---- + Causes Netrw to issue help + Netrw will enter the directory or read the file netrw-cr + Netrw will attempt to remove the file/directory netrw-del +< (etc.) + +To select files for display and editing (with the cursor atop a filename): +> + o Enter the file/directory under the cursor in a new netrw-o + browser window. A horizontal split is used. + O Obtain a file specified by cursor netrw-O + p Preview the file netrw-p + P Browse in the previously used window netrw-P + v Enter the file/directory under the cursor in a new netrw-v + browser window. A vertical split is used. +< The following normal-mode commands may be used to control the browser display: - - i Controls listing style (thin, long, wide, and tree). - The long listing includes size and date information. - s Repeatedly pressing s will change the way the files - are sorted; one may sort on name, modification time, - or size. - r Reverse the sorting order. - +> + i Cycle between thin, long, wide, and tree listings netrw-i + r Reverse sorting order netrw-r + s Select sorting style: by name, time, or file size netrw-s +< As a sampling of extra normal-mode commands: - - 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 - prompt will be issued for the new name. - D Delete the file or directory under the cursor; a - confirmation request will be issued. - mb gb Make bookmark/goto bookmark - - +> + cd Make browsing directory the current directory netrw-cd + D Attempt to remove the file(s)/directory(ies) netrw-D + gb Go to previous bookmarked directory netrw-gb + mb Bookmark current directory netrw-mb + R Rename the designated file(s)/directory(ies) netrw-R +< One may also use command mode; again, just a sampling: - - :Explore [directory] Browse specified/current directory - :NetrwSettings A comprehensive list of your current netrw - settings with help linkage. - -The netrw browser is not limited to just your local machine; one may use -urls such as: (that trailing / is important) +> + :Explore[!] [dir] Explore directory of current file......netrw-explore + :Hexplore[!] [dir] Horizontal Split & Explore.............netrw-explore +< +The netrw browser is not limited to just your local machine; one may use URLs +such as: > :Explore ftp://somehost/path/to/dir/ :e scp://somehost/path/to/dir/ +< + Note: The trailing "/" is important. See |netrw-browse| for more. @@ -219,8 +206,8 @@ TAB LOCAL DIRECTORY When you open a new tab page, it uses the directory of the window in the previous tab page from which the new tab page was opened. You can change the -directory of the current tab page using the `:tcd` command. All the windows in -a tab page share this directory except for windows with a window-local +directory of the current tab page using the `:tcd` command. All the windows +in a tab page share this directory except for windows with a window-local directory. Any new windows opened in this tab page will use this directory as the current working directory. Using a `:cd` command in a tab page will not change the working directory of tab pages which have a tab local directory. @@ -318,13 +305,13 @@ without making sure you have saved all the buffers. INACTIVE BUFFERS - When a buffer has been used once, Vim remembers some information about it. +When a buffer has been used once, Vim remembers some information about it. When it is not displayed in a window and it is not hidden, it is still in the buffer list. This is called an inactive buffer. Overview: - Active Appears in a window, text loaded. - Hidden Not in a window, text loaded. - Inactive Not in a window, no text loaded. + Active Appears in a window, text loaded. + Hidden Not in a window, text loaded. + Inactive Not in a window, no text loaded. The inactive buffers are remembered, because Vim keeps information about them, like marks. And remembering the file name is useful too, so that you can see @@ -404,12 +391,11 @@ will be closed. If you delete the current buffer, the current window will be closed. If it was the last window, Vim will find another buffer to edit. You can't be editing nothing! - Note: - Even after removing the buffer with ":bdelete" Vim still remembers it. - It's actually made "unlisted", it no longer appears in the list from - ":buffers". The ":buffers!" command will list unlisted buffers (yes, - Vim can do the impossible). To really make Vim forget about a buffer, - use ":bwipe". Also see the 'buflisted' option. + Note: Even after removing the buffer with ":bdelete" Vim still + remembers it. It's actually made "unlisted", it no longer appears in + the list from ":buffers". The ":buffers!" command will list unlisted + buffers (yes, Vim can do the impossible). To really make Vim forget + about a buffer, use ":bwipe". Also see the 'buflisted' option. ============================================================================== diff --git a/runtime/doc/usr_23.txt b/runtime/doc/usr_23.txt index e5ba25ae..91b925a7 100644 --- a/runtime/doc/usr_23.txt +++ b/runtime/doc/usr_23.txt @@ -1,7 +1,7 @@ -*usr_23.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_23.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Editing other files diff --git a/runtime/doc/usr_24.txt b/runtime/doc/usr_24.txt index 16a70635..540880b2 100644 --- a/runtime/doc/usr_24.txt +++ b/runtime/doc/usr_24.txt @@ -1,7 +1,7 @@ -*usr_24.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_24.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Inserting quickly @@ -567,8 +567,8 @@ that combination. Thus CTRL-K dP also works. Since there is no digraph for 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. + using. Always use ":digraphs" to find out which digraphs are + currently available. You can define your own digraphs by specifying the target character with a decimal number. Example: > diff --git a/runtime/doc/usr_25.txt b/runtime/doc/usr_25.txt index 71e96c77..f44634dd 100644 --- a/runtime/doc/usr_25.txt +++ b/runtime/doc/usr_25.txt @@ -1,7 +1,7 @@ -*usr_25.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_25.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Editing formatted text diff --git a/runtime/doc/usr_26.txt b/runtime/doc/usr_26.txt index 3dc54543..2c718bff 100644 --- a/runtime/doc/usr_26.txt +++ b/runtime/doc/usr_26.txt @@ -1,7 +1,7 @@ -*usr_26.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_26.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Repeating diff --git a/runtime/doc/usr_27.txt b/runtime/doc/usr_27.txt index ab21e00b..1df32a76 100644 --- a/runtime/doc/usr_27.txt +++ b/runtime/doc/usr_27.txt @@ -1,7 +1,7 @@ -*usr_27.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_27.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Search commands and patterns diff --git a/runtime/doc/usr_28.txt b/runtime/doc/usr_28.txt index ad06cc0a..2ff01e93 100644 --- a/runtime/doc/usr_28.txt +++ b/runtime/doc/usr_28.txt @@ -1,7 +1,7 @@ -*usr_28.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_28.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Folding diff --git a/runtime/doc/usr_29.txt b/runtime/doc/usr_29.txt index fe1a79f7..3efbe47c 100644 --- a/runtime/doc/usr_29.txt +++ b/runtime/doc/usr_29.txt @@ -1,7 +1,7 @@ -*usr_29.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_29.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Moving through programs diff --git a/runtime/doc/usr_30.txt b/runtime/doc/usr_30.txt index 8a3873c8..a541c77d 100644 --- a/runtime/doc/usr_30.txt +++ b/runtime/doc/usr_30.txt @@ -1,7 +1,7 @@ -*usr_30.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_30.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Editing programs @@ -37,9 +37,9 @@ you give) and captures the results: > If errors were generated, they are captured and the editor positions you where the first error occurred. - Take a look at an example ":make" session. (Typical :make sessions generate -far more errors and fewer stupid ones.) After typing ":make" the screen looks -like this: + Take a look at an example ":make" session. (Typical :make sessions +generate far more errors and fewer stupid ones.) After typing ":make" the +screen looks like this: :!make | &tee /tmp/vim215953.err ~ gcc -g -Wall -o prog main.c sub.c ~ @@ -544,7 +544,7 @@ reach the nearest soft tab stop. The following example uses a ------->a To maintain global coherence, one can `:set softtabstop=-1` so that -the value of 'shiftwidth' is use for the number of columns between two soft +the value of 'shiftwidth' is used for the number of columns between two soft tab stops. If you prefer to have different values for 'shiftwidth' and 'softtabstop', diff --git a/runtime/doc/usr_31.txt b/runtime/doc/usr_31.txt index 5e65f682..15c391b4 100644 --- a/runtime/doc/usr_31.txt +++ b/runtime/doc/usr_31.txt @@ -1,7 +1,7 @@ -*usr_31.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_31.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Exploiting the GUI diff --git a/runtime/doc/usr_32.txt b/runtime/doc/usr_32.txt index ee3ad62a..b3c1b9b3 100644 --- a/runtime/doc/usr_32.txt +++ b/runtime/doc/usr_32.txt @@ -1,7 +1,7 @@ -*usr_32.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_32.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar The undo tree diff --git a/runtime/doc/usr_40.txt b/runtime/doc/usr_40.txt index 6517f851..a80436c9 100644 --- a/runtime/doc/usr_40.txt +++ b/runtime/doc/usr_40.txt @@ -1,7 +1,7 @@ -*usr_40.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_40.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Make new commands @@ -385,8 +385,8 @@ Some of the other options and keywords are as follows: -count={number} The command can take a count whose default is {number}. The resulting count can be used through the keyword. - -bang You can use a !. If present, using will - result in a !. + -bang You can use a !. If present, using + will result in a !. -register You can specify a register. (The default is the unnamed register.) The register specification is available as @@ -563,9 +563,9 @@ for the cprograms group: > GROUPS -The {group} item, used when defining an autocommand, groups related autocommands -together. This can be used to delete all the autocommands in a certain group, -for example. +The {group} item, used when defining an autocommand, groups related +autocommands together. This can be used to delete all the autocommands in a +certain group, for example. When defining several autocommands for a certain group, use the ":augroup" command. For example, let's define autocommands for C programs: > diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt index 1ac9b14c..e6ca8045 100644 --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,7 +1,7 @@ -*usr_41.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_41.txt* For Vim version 9.2. Last change: 2026 Feb 16 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Write a Vim script @@ -38,7 +38,7 @@ language like for example .vim files or configuration files like .vimrc and uses to customize and extend its behavior. *vim-script-notation* -The correct notation is "Vim script" (or "Vim9 script" when refering to the +The correct notation is "Vim script" (or "Vim9 script" when referring to the new Vim9 language |Vim9-script|), so we will use "Vim script" to refer to the Vim scripting language throughout this documentation. This shorthand helps to streamline explanations and discussions about scripting with Vim. @@ -764,7 +764,8 @@ String manipulation: *string-functions* charclass() class of a character match() position where a pattern matches in a string matchbufline() all the matches of a pattern in a buffer - matchend() position where a pattern match ends in a string + matchend() position where a pattern match ends in a + string matchfuzzy() fuzzy matches a string in a list of strings matchfuzzypos() fuzzy matches a string in a list of strings matchstr() match of a pattern in a string @@ -841,7 +842,8 @@ List manipulation: *list-functions* indexof() index in a List where an expression is true max() maximum value in a List min() minimum value in a List - count() count number of times a value appears in a List + count() count number of times a value appears in a + List repeat() repeat a List multiple times flatten() flatten a List flattennew() flatten a copy of a List @@ -1135,8 +1137,6 @@ Insert mode completion: *completion-functions* complete_add() add to found matches complete_check() check if completion should be aborted complete_info() get current completion information - complete_match() get insert completion start match col and - trigger text preinserted() check if text is inserted after cursor pumvisible() check if the popup menu is displayed pum_getpos() position and size of popup menu if visible @@ -1246,7 +1246,8 @@ Mappings and Menus: *mapping-functions* Testing: *test-functions* assert_equal() assert that two expressions values are equal assert_equalfile() assert that two file contents are equal - assert_notequal() assert that two expressions values are not equal + assert_notequal() assert that two expressions values are not + equal assert_inrange() assert that an expression is inside a range assert_match() assert that a pattern matches the value assert_notmatch() assert that a pattern does not match the value @@ -1286,23 +1287,24 @@ Testing: *test-functions* Inter-process communication: *channel-functions* ch_canread() check if there is something to read - ch_open() open a channel ch_close() close a channel ch_close_in() close the in part of a channel + ch_evalexpr() evaluate an expression over channel + ch_evalraw() evaluate a raw string over channel + ch_getbufnr() get the buffer number for a channel + ch_getjob() get the Job of a channel + ch_info() get information about a channel + ch_listen() listen on a channel + ch_log() write a message in the channel log + ch_logfile() start logging channel activity + ch_open() open a channel ch_read() read a message from a channel ch_readblob() read a Blob from a channel ch_readraw() read a raw message from a channel ch_sendexpr() send a JSON message over a channel ch_sendraw() send a raw message over a channel - ch_evalexpr() evaluate an expression over channel - ch_evalraw() evaluate a raw string over channel + ch_setoptions() set channel options ch_status() get status of a channel - ch_getbufnr() get the buffer number of a channel - ch_getjob() get the job associated with a channel - ch_info() get channel information - ch_log() write a message in the channel log file - ch_logfile() set the channel log file - ch_setoptions() set the options for a channel json_encode() encode an expression to a JSON string json_decode() decode a JSON string to Vim types js_encode() encode an expression to a JSON string @@ -1472,6 +1474,9 @@ Various: *various-functions* debugbreak() interrupt a program being debugged + redraw_listener_add() add callbacks to listen for redraws + redraw_listener_remove() remove a redraw listener + ============================================================================== *41.7* Defining a function diff --git a/runtime/doc/usr_42.txt b/runtime/doc/usr_42.txt index 9086a619..70afa003 100644 --- a/runtime/doc/usr_42.txt +++ b/runtime/doc/usr_42.txt @@ -1,7 +1,7 @@ -*usr_42.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_42.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Add new menus diff --git a/runtime/doc/usr_43.txt b/runtime/doc/usr_43.txt index e7a52392..30aef67e 100644 --- a/runtime/doc/usr_43.txt +++ b/runtime/doc/usr_43.txt @@ -1,7 +1,7 @@ -*usr_43.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_43.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Using filetypes diff --git a/runtime/doc/usr_44.txt b/runtime/doc/usr_44.txt index 12a32e50..a77bb4e3 100644 --- a/runtime/doc/usr_44.txt +++ b/runtime/doc/usr_44.txt @@ -1,7 +1,7 @@ -*usr_44.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_44.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Your own syntax highlighted @@ -629,10 +629,10 @@ be included in the next Vim version! ADDING TO AN EXISTING SYNTAX FILE -We were assuming you were adding a completely new syntax file. When an existing -syntax file works, but is missing some items, you can add items in a separate -file. That avoids changing the distributed syntax file, which will be lost -when installing a new version of Vim. +We were assuming you were adding a completely new syntax file. When an +existing syntax file works, but is missing some items, you can add items in a +separate file. That avoids changing the distributed syntax file, which will +be lost when installing a new version of Vim. Write syntax commands in your file, possibly using group names from the existing syntax. For example, to add new variable types to the C syntax file: > diff --git a/runtime/doc/usr_45.txt b/runtime/doc/usr_45.txt index 175d4fc3..726c0e22 100644 --- a/runtime/doc/usr_45.txt +++ b/runtime/doc/usr_45.txt @@ -1,7 +1,7 @@ -*usr_45.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_45.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Select your language (locale) diff --git a/runtime/doc/usr_50.txt b/runtime/doc/usr_50.txt index 6082ce2a..35bb0da0 100644 --- a/runtime/doc/usr_50.txt +++ b/runtime/doc/usr_50.txt @@ -1,7 +1,7 @@ -*usr_50.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_50.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Advanced Vim script writing diff --git a/runtime/doc/usr_51.txt b/runtime/doc/usr_51.txt index 3b43d273..15ca4f50 100644 --- a/runtime/doc/usr_51.txt +++ b/runtime/doc/usr_51.txt @@ -1,7 +1,7 @@ -*usr_51.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_51.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Write plugins diff --git a/runtime/doc/usr_52.txt b/runtime/doc/usr_52.txt index d013535a..f59e74b4 100644 --- a/runtime/doc/usr_52.txt +++ b/runtime/doc/usr_52.txt @@ -1,7 +1,7 @@ -*usr_52.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_52.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Write larger plugins diff --git a/runtime/doc/usr_90.txt b/runtime/doc/usr_90.txt index 2a9dd952..4ed68090 100644 --- a/runtime/doc/usr_90.txt +++ b/runtime/doc/usr_90.txt @@ -1,7 +1,7 @@ -*usr_90.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_90.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Installing Vim diff --git a/runtime/doc/usr_toc.txt b/runtime/doc/usr_toc.txt index de2ec1dc..8b8e1c97 100644 --- a/runtime/doc/usr_toc.txt +++ b/runtime/doc/usr_toc.txt @@ -1,7 +1,7 @@ -*usr_toc.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*usr_toc.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM USER MANUAL by Bram Moolenaar + VIM USER MANUAL by Bram Moolenaar Table Of Contents *user-manual* *usr* diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt index 8b245b38..518f6caa 100644 --- a/runtime/doc/various.txt +++ b/runtime/doc/various.txt @@ -1,7 +1,7 @@ -*various.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*various.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Various commands *various* @@ -379,6 +379,7 @@ T *+cindent* 'cindent', C indenting; Always enabled N *+clientserver* Unix and Win32: Remote invocation |clientserver| *+clipboard* |clipboard| support compiled-in *+clipboard_working* |clipboard| support compiled-in and working + *+clipboard_provider* |clipboard-providers| support compiled-in T *+cmdline_compl* command line completion |cmdline-completion| T *+cmdline_hist* command line history |cmdline-history| T *+cmdline_info* 'showcmd' and 'ruler'; Always enabled since diff --git a/runtime/doc/version4.txt b/runtime/doc/version4.txt index d911cce4..1ce21301 100644 --- a/runtime/doc/version4.txt +++ b/runtime/doc/version4.txt @@ -1,7 +1,7 @@ -*version4.txt* For Vim version 9.1. Last change: 2025 Aug 06 +*version4.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar This document lists the incompatible differences between Vim 3.0 and Vim 4.0. diff --git a/runtime/doc/version5.txt b/runtime/doc/version5.txt index 2f30f8ec..0efbd5b8 100644 --- a/runtime/doc/version5.txt +++ b/runtime/doc/version5.txt @@ -1,7 +1,7 @@ -*version5.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*version5.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Welcome to Vim Version 5.0! diff --git a/runtime/doc/version6.txt b/runtime/doc/version6.txt index 5f6f0c0e..01acc1a5 100644 --- a/runtime/doc/version6.txt +++ b/runtime/doc/version6.txt @@ -1,7 +1,7 @@ -*version6.txt* For Vim version 9.1. Last change: 2025 Jul 22 +*version6.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Welcome to Vim Version 6.0! A large number of features has been added. This diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt index d47f1b6a..d8528bb6 100644 --- a/runtime/doc/version7.txt +++ b/runtime/doc/version7.txt @@ -1,7 +1,7 @@ -*version7.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*version7.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *vim7* *version-7.0* *version7.0* diff --git a/runtime/doc/version8.txt b/runtime/doc/version8.txt index cfb6f1e3..e8fc0e28 100644 --- a/runtime/doc/version8.txt +++ b/runtime/doc/version8.txt @@ -1,7 +1,7 @@ -*version8.txt* For Vim version 9.1. Last change: 2025 Jul 21 +*version8.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *vim8* *vim-8* *version-8.0* *version8.0* diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt index f40fe49f..e9a949e3 100644 --- a/runtime/doc/version9.txt +++ b/runtime/doc/version9.txt @@ -1,7 +1,7 @@ -*version9.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*version9.txt* For Vim version 9.2. Last change: 2026 Mar 19 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar *vim-9.0* *vim-9* *version-9.0* *version9.0* @@ -30,9 +30,19 @@ COMPILE TIME CHANGES |compile-changes-9| PATCHES |patches-9| VERSION 9.1 |version-9.1| -Changed |changed-9.1| -Added |added-9.1| -Patches |patches-9.1| + Changed |changed-9.1| + Added |added-9.1| + Patches |patches-9.1| + +VERSION 9.2 |version-9.2| + Changed |changed-9.2| + Added |added-9.2| + Patches |patches-9.2| + +VERSION 9.3 |version-9.3| + Changed |changed-9.3| + Added |added-9.3| + Patches |patches-9.3| See |vi_diff.txt| for an overview of differences between Vi and Vim 9.0. @@ -52,7 +62,7 @@ remember him! Vim version 9.1 is dedicated to Bram Moolenaar, who passed away on August 3rd 2023 while still working full-time on Vim. The Vim project would not exist without his ongoing passion to lead and develop Vim and the community for more -than 30 years. Bram was also passionate about his |ICCF| foundation to help +than 30 years. Bram was also passionate about his ICCF foundation to help children in Uganda. If you enjoy using Vim, please consider donating! We will miss his guidance, passion and leadership. @@ -31354,7 +31364,7 @@ Files: src/testdir/test_gui.vim Patch 8.2.5113 Problem: Timer becomes invalid after fork/exec, :gui gives errors. (Gabriel Dupras) -Solution: Delete the timer befor forking. (closes #10584) +Solution: Delete the timer before forking. (closes #10584) Files: src/os_unix.c, src/proto/os_unix.pro, src/gui.c Patch 8.2.5114 @@ -41541,8 +41551,7 @@ Solution: re-generate them ============================================================================== VERSION 9.2 *version-9.2* *version9.2* *vim-9.2* -This section is about improvements made between version 9.1 and 9.2 -and is a work in progress. +This section is about improvements made between version 9.1 and 9.2. Vim9 script ~ ----------- @@ -41627,8 +41636,9 @@ Other new features ~ ------------------ - Support for Super key mappings in GTK using . -- The new packages |package-comment|, |package-nohlsearch|, |package-hlyank| and - |help-TOC| are included. +- The new optional packages |package-comment|, |package-nohlsearch|, + |package-hlyank|, |help-TOC|, |package-helpcurwin| and |package-osc52| are + included. - An interactive tutor plugin has been included |vim-tutor-mode| and can be started via |:Tutor|. @@ -41653,6 +41663,8 @@ Other new features ~ - |items()| function now supports Blob. +- The clipboard provider feature has been added |clipboard-providers|. + *changed-9.2* Changed~ ------- @@ -41692,6 +41704,8 @@ Completion: ~ - 'smartcase' applies to completion filtering Options: ~ +- 'commentstring' is now available in all builds and no longer requires the + |+folding| feature - the default for 'commentstring' contains whitespace padding to have automatic comments look nicer |comment-install| - 'completeopt' is now a |global-local| option. @@ -41717,7 +41731,12 @@ Options: ~ to ">" by default, indicating text that extends beyond the window width. - 'guioptions': New value |'go-C'| to style the title/caption bar on Windows 11 (see also the below platform specific change). +- 'guioptions': Support darkmode on MS-Windows for menu and title bar using + |'go-d'| (see also the below platform specific change). +- 'guioptions': New value |'go-s'| to support fullscreen on MS-Windows GUI + (see also the below platform specific change). - 'completepopup': Add more values to style popup windows. +- 'fsync' is now a |global-local| option. Ex commands: ~ - allow to specify a priority when defining a new sign |:sign-define| @@ -41735,7 +41754,8 @@ Functions: ~ - |setqflist()| and |setloclist()| can optionally try to preserve the current selection in the quickfix list with the "u" action. - allow to pass local Vim script variables to python interpreter |py3eval()| -- |getwininfo()| now also returns the "leftcol" property for a window +- |getwininfo()| now also returns the "leftcol" and "status_height" properties + for a window - |v:stacktrace| The stack trace of the exception most recently caught and not finished - Add the optional {opts} |Dict| argument to |getchar()| to control: cursor @@ -41746,6 +41766,8 @@ Functions: ~ - |sha256()| also accepts a |Blob| as argument. - |listener_add()| allows to register un-buffered listeners, so that changes are handled as soon as they happen. +- |redraw_listener_add()| and |redraw_listener_remove()| add/remove callbacks + for redrawing events. Plugins~ - |zip| plugin works with PowerShell Core. @@ -41754,7 +41776,13 @@ Platform specific ~ - MS-Winodws: Paths like "\Windows" and "/Windows" are now considered to be absolute paths (to the current drive) and no longer relative. - MS-Windows: The title bar follows the |hl-TitleBar| and |hl-TitleBarNC| - highlighting group |gui-w32-title-bar|. + highlighting group |gui-w32-title-bar| with |'go-C'| +- MS-Windows: Support darkmode for menu and title bar using |'go-d'| +- MS-Windows: Vim no longer searches the current directory for + executables when running external commands; prefix a relative or absolute + path if you want the old behavior |$NoDefaultCurrentDirectoryInExePath|. +- MS-Windows: New value |'go-s'| to support fullscreen on MS-Windows GUI + - macOS: increase default scheduler priority to TASK_DEFAULT_APPLICATION. Others: ~ @@ -41783,6 +41811,11 @@ Others: ~ - Vim triggers the |TermResponseAll| autocommand for any terminal OSC value. - Support CTRL-B and CTRL-F in the |more-prompt|. + +Not Vim related~ +- Updated sponsorship documentation to replace references to ICCF with Kuwasha + International Development Society as Vim's designated charity. + *added-9.2* Added ~ ----- @@ -41795,7 +41828,6 @@ Functions: ~ |blob2str()| convert a blob into a List of strings |bindtextdomain()| set message lookup translation base path |cmdcomplete_info()| get current cmdline completion info -|complete_match()| get completion and trigger info |diff()| diff two Lists of strings |filecopy()| copy a file {from} to {to} |foreach()| apply function to List items @@ -41809,12 +41841,15 @@ Functions: ~ |id()| get unique identifier for a Dict, List, Object, Channel or Blob variable |list2tuple()| turn a List of items into a Tuple +|listener_add()| add a callback to listen to changes |matchbufline()| all the matches of a pattern in a buffer |matchstrlist()| all the matches of a pattern in a List of strings |ngettext()| lookup single/plural message translation |popup_setbuf()| switch to a different buffer in a popup |preinserted()| whether preinserted text has been inserted during completion (see 'completeopt') +|redraw_listener_add()| add callbacks to listen for redraws +|redraw_listener_remove()| remove a redraw listener |str2blob()| convert a List of strings into a blob |test_null_tuple()| return a null tuple |tuple2list()| turn a Tuple of items into a List @@ -41858,11 +41893,13 @@ Commands: ~ Ex-Commands: ~ +|:clipreset| choose a new method for accessing the clipboard |:iput| like |:put| but adjust indent |:pbuffer| Edit buffer [N] from the buffer list in the preview window |:redrawtabpanel| Force updating the 'tabpanel'. |:uniq| Deduplicate text in the current buffer. +|:wlrestore| reinitialize the wayland compositor connection Options: ~ @@ -41871,8 +41908,6 @@ Options: ~ 'autocompletetimeout' initial decay timeout for autocompletion algorithm 'chistory' Size of the quickfix stack |quickfix-stack| 'clipmethod' How to access the clipboard -'completefuzzycollect' Enable fuzzy collection of candidates for (some) - |ins-completion| modes 'completeitemalign' Order of |complete-items| in Insert mode completion popup 'completetimeout' initial decay timeout for CTRL-N and CTRL-P @@ -41880,10 +41915,10 @@ Options: ~ 'eventignorewin' autocommand events that are ignored in a window 'findfunc' Vim function to obtain the results for a |:find| command -'isexpand' defines triggers for completion 'lhistory' Size of the location list stack |quickfix-stack| 'maxsearchcount' Set the maximum number for search-stat |shm-S| 'messagesopt' configure |:messages| and |hit-enter| prompt +'osctimeoutlen' OSC terminator receive timeout 'pumborder' define popup border and decorations 'pummaxwidth' maximum width for the completion popup menu 'showtabpanel' When to show the |tabpanel| @@ -41891,23 +41926,26 @@ Options: ~ 'tabpanel' Optional vertical panel for displaying tabpages |tabpanel| 'tabpanelopt' Optional settings for the |tabpanel| -'t_xo' Terminal uses XON/XOFF handshaking (e.g. vt420) 't_CF' Support for alternate font highlighting terminal code +'t_xo' Terminal uses XON/XOFF handshaking (e.g. vt420) 'winfixbuf' Keep buffer focused in a window 'wlseat' Specify Wayland seat to use for the |wayland| feature 'wlsteal' Steal focus to access the |wayland| clipboard -'wltimeout' Specify the connection timeout for the |wayland| +'wltimeoutlen' Specify the connection timeout for the |wayland| compositor Vim Variables: ~ |v:clipmethod| The current 'clipmethod'. +|v:clipproviders| A dictionary containing clipboard providers + configuration |clipboard-providers|. |v:stacktrace| The most recent caught exception. -|v:t_enumvalue| Value of |enumvalue|. |v:t_enum| Value of |enum| type. +|v:t_enumvalue| Value of |enumvalue|. |v:t_tuple| Value of |Tuple| type. |v:termda1| The escape sequence returned for the primary device attribute query (DA1). |v:termosc| The most recent received OSC response. +|v:vim_did_init| Set once Vim finishes startup initialization. |v:wayland_display| The name of the Wayland display Vim is connected to. Vim Arguments: ~ @@ -41943,5 +41981,10669 @@ The list of patches that got included since 9.1.0. This includes all the new features, but does not include runtime file changes (syntax, indent, ftplugin, documentation, etc.) +Note: authorship and the list of changed files is left out and only visible +through `git log` for each commit. + +Patch 9.1.0001 +Problem: When closing the current window (or when moving it to a tabpage), + the previous window may refer to the new current window (`winnr() == + winnr('#')`) if that window is selected as the new current window. +Solution: Set `prevwin = NULL` when switching away from an invalid `curwin` + and the target window was the `prevwin`. (Sean Dewar) + +Patch 9.1.0002 +Problem: a closing fold expression may unexpectedly start a new fold when it + should end a fold (reported by Shota Nozaki) +Solution: if a fold hasn't started yet, do not immediately start a new fold + with level 1 (Shota Nozaki) + +Patch 9.1.0003 +Problem: Cannot build against Ruby 33 dynamically +Solution: Ruby 33 removed transient heap, so do not use rb_ary_transient + anymore, NoMethodError format changed, so update test for expected + error message (Isao Sato) + +Patch 9.1.0004 +Problem: reloading colorscheme when not changing 'background' +Solution: Check, if the background option value actually changed, + if not, return early. + +Patch 9.1.0005 +Problem: OpenVMS build does not support python3 and xterm_save +Solution: Enable python3 + xterm_save feature, fix style issues + (Zoltan Arpadffy) + +Patch 9.1.0006 +Problem: is*() and to*() function may be unsafe +Solution: Add SAFE_* macros and start using those instead + (Keith Thompson) + +Patch 9.1.0007 +Problem: can select empty inner text blocks + (laurentalacoque) +Solution: make selecting empty inner text blocks an error textobjects: Make + selecting inner empty blocks an error + +Patch 9.1.0008 +Problem: NSIS installer includes syntax test dumps + (Yegappan Lakshmanan) +Solution: Exclude syntax/testdir when creating the NSIS installer + +Patch 9.1.0009 +Problem: Cannot easily get the list of matches +Solution: Add the matchstrlist() and matchbufline() Vim script functions + (Yegappan Lakshmanan) + +Patch 9.1.0010 +Problem: Keymap completion is not available +Solution: Add keymap completion (Doug Kearns) + +Patch 9.1.0011 +Problem: regexp cannot match combining chars in collection +Solution: Check for combining characters in regex collections for the + NFA and BT Regex Engine + +Patch 9.1.0012 +Problem: regression with empty inner blocks introduced + (after v9.1.0007) +Solution: Set correct cursor position, Check for visual mode + being active (Maxim Kim) + +Patch 9.1.0013 +Problem: Modula2 filetype support lacking +Solution: Improve the Modula-2 runtime support, add additional modula2 + dialects, add compiler plugin, update syntax highlighting, + include syntax tests, update Makefiles (Doug Kearns) + +Patch 9.1.0014 +Problem: incorrect use of W_WINROW in edit.c +Solution: compare against curwin->w_height instead Remove incorrect use of + W_WINROW + +Patch 9.1.0015 +Problem: i_CTRL-R- no longer works in replace mode +Solution: delete characters in replace mode before putting, add a test, add a + bit warning into the documentation, that i_CTRL-R-P/O is not + supported in Replace mode for now + +Patch 9.1.0016 +Problem: default diff highlighting is too noisy +Solution: Link diff highlighting groups to new Added/Removed/Changed, revert + previous change (Romain Lafourcade) + +Patch 9.1.0017 +Problem: use-after-free in eval1_emsg() when an empty line follows a lambda + (by @yu3s) +Solution: only set evalarg->eval_using_cmdline = FALSE when the *arg pointer + is not null + +Patch 9.1.0018 +Problem: use of #if instead of #ifdef +Solution: use correct form of #ifdef + +Patch 9.1.0019 +Problem: cmdline may disappear when changing 'cmdheight' + (after Patch 9.0.0190, @markonm) +Solution: always re-calculate the old_p_ch value, not only + when cmdline_row was higher than expected + +Patch 9.1.0020 +Problem: Vim9: cannot compile all methods in a class +Solution: Support compiling all the methods in a class using :defcompile + (Yegappan Lakshmanan) + +Patch 9.1.0021 +Problem: i_CTRL-R- doesn't work for multibyte chars in Replace mode, + Coverity complains missing return value for u_save_cursor() +Solution: Use mb_charlen() and del_chars() instead, handle failure mode + for u_save_cursor() correctly (@zeertzjq) + +Patch 9.1.0022 +Problem: Coverity complains about improper use of negative value +Solution: Add a condition to validate that keytyped is larger or equal + to 0 + +Patch 9.1.0023 +Problem: xxd: few problems with EBCDIC for z/OS (MVS) +Solution: Fix xxd build and support ASCII and UTF-8 on z/OS (MVS) + natively, add MVS guard checks with __CHARSET_LIB, + support $LIBS in the Makefile (Igor Todorovski) + +Patch 9.1.0024 +Problem: z/OS (MVS) support can be improved +Solution: set UTF-8 as the default encoding for z/OS + +Patch 9.1.0025 +Problem: A few typos in tests and justify.vim +Solution: fix them + +Patch 9.1.0026 +Problem: win32: Windows default font lacking (@clach04) +Solution: Improve default font (Ken Takata) + +Patch 9.1.0027 +Problem: Vim is missing a foreach() func +Solution: Implement foreach({expr1}, {expr2}) function, which applies {expr2} + for each item in {expr1} without changing it (Ernie Rael) + +Patch 9.1.0028 +Problem: win32: Ctrl-D cannot be used to close a pipe +Solution: Properly detect Ctrl-D when reading from a pipe + (GuyBrush) + +Patch 9.1.0029 +Problem: Cannot act on various terminal response codes +Solution: Add the TerminalResponseAll autocommand + (Danek Duvall) + +Patch 9.1.0030 +Problem: Cannot use terminal alternate fonts (PMunch) +Solution: Support terminal alternate fonts using CSI SGR 10-20 and t_CF code + (PMunch) + +Patch 9.1.0031 +Problem: Link Error on Windows +Solution: Add ifdef HAVE_TGETENT for term_strings_not_set() + +Patch 9.1.0032 +Problem: MS-Windows installer misses keymaps (Maxim Kim) +Solution: Include keymaps in the installer archive (Ken Takata) + +Patch 9.1.0033 +Problem: Insert mode not stopped if an autocommand modifies a hidden + buffer while closing a prompt buffer. +Solution: Don't set b_prompt_insert if stop_insert_mode is already set. + (zeertzjq) + +Patch 9.1.0034 +Problem: Window may unexpectedly scroll when 'scrollbind' is set + and setting a buffer-local option using setbufvar() (Boris Staletic) +Solution: Save and restore the windows topline before opening the + popup window. + +Patch 9.1.0035 +Problem: i_CTRL-] triggers InsertCharPre +Solution: Return if CTRL-] is received. InsertCharPre is supposed to be only + used for chars to be inserted but i_CTRL-] triggers expansion and is + not inserted into the buffer (altermo) + +Patch 9.1.0036 +Problem: MS-Windows: Warning about unused variable + (after 9.1.0030, John Marriott) +Solution: Adjust #ifdef and test for HAVE_TGETENT (John Marriott) + +Patch 9.1.0037 +Problem: Calling get_breakindent_win() repeatedly when computing virtual + column, and get_breakindent_win() does a STRCMP() on the whole line + since Patch 9.0.0016. +Solution: Cache the result, since the line doesn't change. + (zeertzjq) + +Patch 9.1.0038 +Problem: Unnecessary loop in getvcol(). +Solution: Compare next char position with pos->col directly (zeertzjq). + +Patch 9.1.0039 +Problem: too vague errors for 'listchars'/'fillchars' +Solution: Include the field name in error message (zeertzjq). + +Patch 9.1.0040 +Problem: Modifying a hidden buffer still interferes with prompt buffer mode + changes. +Solution: Save and restore b_prompt_insert (zeertzjq). + +Patch 9.1.0041 +Problem: xxd -i may generate incorrect C statements (Kuratius) +Solution: xxd: Make size type returned by -i option compatible with C standard + by using type size_t instead of unsigned int (Kuratius) + +Patch 9.1.0042 +Problem: Missing test for Chuck filetype after (Christian Clason) +Solution: Add a filetype test + +Patch 9.1.0043 +Problem: ml_get: invalid lnum when :s replaces visual selection (@ropery) +Solution: substitute may decrement the number of lines in a buffer, so + validate, that the bottom lines of the visual selection + stays within the max buffer line + +Patch 9.1.0044 +Problem: po Makefiles can be improved +Solution: Improve the style of the Makefiles, update Makefile variables, + update documentation (RestorerZ) + +Patch 9.1.0045 +Problem: --remote-silent applies the wildignore option to each argument, + which may result in "E479: No match" (hebaronson) +Solution: temporarily reset 'wildignore' setting when building the :drop + command + +Patch 9.1.0046 +Problem: :drop does not re-use empty buffer (Rocco Mao) +Solution: Make :drop re-use an empty buffer (Rocco Mao) + +Patch 9.1.0047 +Problem: Things that temporarily change/restore curwin/buf (e.g: win_execute, + some autocmds) may break assumptions that curwin/buf is the cmdwin + when "cmdwin_type != 0", causing issues. +Solution: Expose the cmdwin's real win/buf and check that instead. Also try to + ensure these variables are NULL if "cmdwin_type == 0", allowing them + to be used directly in most cases without checking cmdwin_type. + (Sean Dewar). + +Patch 9.1.0048 +Problem: Autocmds triggered from opening the cmdwin (in win_split and + do_ecmd) can cause issues such as E199, as the current checks + are insufficient. +Solution: Commands executed from the cmdwin apply to the old curwin/buf, so + they should be kept in a "suspended" state; abort if they've + changed. Also abort if cmdwin/buf was tampered with, and check that + curwin is correct. Try to clean up the cmdwin buffer (only if hidden + and non-current to simplify things; the same approach is used when + closing cmdwin normally), and add a beep. (Sean Dewar) + +Patch 9.1.0049 +Problem: E95 is possible if a buffer called "[Command Line]" already exists + when opening the cmdwin. This can also happen if the cmdwin's buffer + could not be deleted when closing. +Solution: Un-name the cmdwin buffer, and give it a special name instead, + similar to what's done for quickfix buffers and for unnamed prompt + and scratch buffers. As a result, BufFilePre/Post are no longer + fired when opening the cmdwin. Add a "command" key to the dictionary + returned by getbufinfo() to differentiate the cmdwin buffer instead. + (Sean Dewar) + +Patch 9.1.0050 +Problem: Win32 Keyboard handling is sub-optimal and has many issues with + international keyboards (risa2000) (after v8.2.4807) +Solution: soft-rollback the change, allow the user to select a suitable + key-translation strategy (Anton Sharonov) + +Patch 9.1.0051 +Problem: MS-Windows: Key event test fail (after 9.1.0050) +Solution: Catch Interrupt and return Ctrl-C + +Patch 9.1.0052 +Problem: Patch 9.1.0041 causes regressions for users (Gleb + Fotengauer-Malinovskiy) +Solution: Revert 9.1.0041 and restore old behaviour + +Patch 9.1.0053 +Problem: MS-Windows: Key event test still fails +Solution: Catch more interrupts (after 9.1.0051) + +Patch 9.1.0054 +Problem: 'linebreak' may still apply to leading whitespace (VanaIgr) +Solution: Compare pointers instead of virtual columns (zeertzjq). + +Patch 9.1.0055 +Problem: formatting long lines is slow (kawaii-Code) +Solution: optimize gq (internal_format) for long lines (kawaii-Code) + +Patch 9.1.0056 +Problem: Incorrect number of trailing spaces inserted for multibyte + characters when pasting a blockwise register in blockwise visual + mode (VanaIgr) +Solution: Skip over trailing UTF-8 bytes when computing the number of trailing + spaces (VanaIgr) + +Patch 9.1.0057 +Problem: MS-Windows: Key event test still fails +Solution: Skip testing CTRL-C, since it causes an Interrupt which causes a + test failure (after 9.1.0053) + +Patch 9.1.0058 +Problem: Cannot map Super Keys in GTK UI (Casey Tucker) +Solution: Enable Super Key mappings in GTK using (Casey Tucker) + +Patch 9.1.0059 +Problem: No event is triggered before creating a window +Solution: Add the WinNewPre event (Sergey Vlasov). + +Patch 9.1.0060 +Problem: Recorded register cannot be translated using keytrans() when it + involves character search (iddqd505) +Solution: Record a K_IGNORE instead of a K_NOP (zeertzjq). + +Patch 9.1.0061 +Problem: UX of visual highlighting can be improved +Solution: Improve readibility of visual highlighting, by setting better + foreground and background colors + +Patch 9.1.0062 +Problem: Internal error when :luado/perldo/pydo etc delete lines +Solution: Test that the line is still valid line number (zeertzjq). + +Patch 9.1.0063 +Problem: GTK code can be improved +Solution: Improve GTK code for initial Wayland support (lilydjwg). + +Patch 9.1.0064 +Problem: No Wayland support +Solution: Add Wayland UI support (lilydjwg). + +Patch 9.1.0065 +Problem: Segfault with CompleteChanged autocommand (markonm) +Solution: Test match->cp_prev for being NULL before accessing it + +Patch 9.1.0066 +Problem: gcc complains about use of uninitialized var (Tony Mechelynck, after + 9.1.0064) +Solution: initialize button to silence gcc + +Patch 9.1.0067 +Problem: gcc still complains about use of uninitialized var (Tony Mechelynck, + after 9.1.0064/9.1.0066) +Solution: This time init the correct variable + +Patch 9.1.0068 +Problem: Visual highlighting can still be improved +Solution: Update Visual highlighting for 8 color terminals, use uniform grey + highlighting for dark and light bg (Maxim Kim) + +Patch 9.1.0069 +Problem: ScreenLines may not be correctly initialized, causing hang + (Olaf Seibert, after 9.0.0220) +Solution: always initialize ScreneLines when allocating a screen (Olaf + Seibert) + +Patch 9.1.0070 +Problem: CI: testsuite not run on M1 Mac +Solution: Make it run on gh runners for M1, disable failing tests for now, + until we figure the problem with the failings tests out (rhysd) + +Patch 9.1.0071 +Problem: Need a diff() Vim script function +Solution: Add the diff() Vim script function using the xdiff internal diff + library, add support for "unified" and "indices" mode (Yegappan + Lakshmanan). + +Patch 9.1.0072 +Problem: Not able to build without FEAT_DIFF (John Marriott, after 9.1.0071) +Solution: Adjust #ifdefs (Yegappan Lakshmanan) + +Patch 9.1.0073 +Problem: Looping over modifier_keys_table[] unnecessarily with only + MOD_MASK_ALT or MOD_MASK_CMD, as modifier_keys_table[] only contains + MOD_MASK_SHIFT and MOD_MASK_CTRL, and the loop won't do anything. +Solution: Remove MOD_MASK_ALT and MOD_MASK_CMD from the condition (zeertzjq). + +Patch 9.1.0074 +Problem: did_set_breakat() should be in optionstr.c as 'breakat' is a string + option. +Solution: Move did_set_breakat() to optionstr.c (zeertzjq). + +Patch 9.1.0075 +Problem: insert completion not correct when adding new leader +Solution: Reset compl_curr_match to compl_shown_match (glepnir). + +Patch 9.1.0076 +Problem: luau config file not detected (lopy) +Solution: Detect it as jsonc (lopy) + +Patch 9.1.0077 +Problem: The call to redraw_for_cursorline() in nv_mousescroll() is + unnecessary because redraw_for_cursorline() only sets redraw type to + UPD_VALID, and all code paths in do_mousescroll() already set redraw + type to at least UPD_VALID. +Solution: Remove call to redraw_for_cursorline() in nv_mousescroll() + (zeertzjq). + +Patch 9.1.0078 +Problem: GTK3: using wrong style for pre-edit area +Solution: remove the widget name, adjust css (lilydjwg). + +Patch 9.1.0079 +Problem: LineNrAbove and LineNrBelow background wrong on wrapped lines. +Solution: Update number column also for wrapped part of a line (zeertzjq). + +Patch 9.1.0080 +Problem: unexpected error for modifying final list using += operator + (Ernie Rael) +Solution: Allow List value modification of a final variable using += + operator (Yegappan Lakshmanan) + +Patch 9.1.0081 +Problem: X11 mouse-scrolling stutters (Ron Aaron, after 9.1.0064) +Solution: Handle GDK_SCROLL_SMOOTH fractional distance events + (lilydjwg) + +Patch 9.1.0082 +Problem: Redrawing can be improved when deleting lines with 'cursorline'. +Solution: Use smarter invalidation and adjustment. Remove unnecessary + UPD_VALID as it is already set at the top of the loop. Make the + test for #4862 fail without the fix (zeertzjq). + +Patch 9.1.0083 +Problem: Redrawing can be improved when inserting/deleting lines with + 'number'. +Solution: Only redraw the number column of lines below changed lines. Add a + test as this wasn't previously tested (zeertzjq). + +Patch 9.1.0084 +Problem: Visual hl wrong when it ends before multibyte 'showbreak' (lacygoil) +Solution: Use vcol_sbr instead of adding n_extra (zeertzjq). + +Patch 9.1.0085 +Problem: X11 scroll size changes after accessing clipboard (Ernie Rael) +Solution: use GDK_SCROLL_MASK for X11 and GDK_SMOOTH_SCROLL_MASK for + Wayland (lilydjwg). + +Patch 9.1.0086 +Problem: Problem when scrolling using slow touchpads scroll event +Solution: Better ways to determine if a smooth scroll has ended (when + available) (lilydjwg). + +Patch 9.1.0087 +Problem: Restore lastused_tabpage too early in do_arg_all() function it + will change later in the function. +Solution: Restore lastused_tabpage a bit later, when being done with + tabpages (glepnir). + +Patch 9.1.0088 +Problem: TextChanged not triggered for :norm! commands (machakann, after + v9.0.2031) +Solution: Only reset curbuf->b_last_changedtick if TextChangedI was triggered + in insert mode (and not blocked) + +Patch 9.1.0089 +Problem: qsort() comparison functions should be transitive +Solution: Do not subtract values, but rather use explicit comparisons + Improve qsort() comparison functions + +Patch 9.1.0090 +Problem: Assigning wrong colors when parsing terminal OSC response +Solution: Correctly assign Green and Blue from the terminal response + (Maxim Kim) + +Patch 9.1.0091 +Problem: Syntax test fails when run with non C locale +Solution: Run syntax tests with C locale, clean up Xtestscript file, + strip environment variables from GetVimCommand() (h-east). + +Patch 9.1.0092 +Problem: Compiler warning for missing type in scroll_event() (chdiza) +Solution: Declare display_type explicitly as integer + +Patch 9.1.0093 +Problem: Still a qsort() comparison function fuzzy_match_item_compare() + that returns result of subtraction (after 9.1.0089). +Solution: Use an explicit comparison instead of subtraction (zeertzjq). + +Patch 9.1.0094 +Problem: xxd: buffer-overflow when writing color output +Solution: properly account for the color escape sequences and adjust LLEN + macro (Goffredo Baroncelli) + +Patch 9.1.0095 +Problem: tests: test_restricted() fails (after: v9.1.0091) +Solution: Add a space before the pipecmd and the actual Vim command to run + +Patch 9.1.0096 +Problem: diff() function uses 'diffexpr' (rickhowe) +Solution: Make diff() always use internal diff(), add support for unified diff + context length, sort diff() options in help (Yegappan Lakshmanan) + +Patch 9.1.0097 +Problem: 'breakindent' behaves inconsistently with 'list' and splits. +Solution: Use 'listchars' from the correct window and handle caching properly. + Move cheaper comparisons to the top (zeertzjq). + +Patch 9.1.0098 +Problem: CompletionChanged not triggered when new leader added causing + no matching item in the completion menu +Solution: When completion is active but no items matched still trigger + CompletChanged event (glepnir). + +Patch 9.1.0099 +Problem: Not able to use diff() with 'diffexpr' (rickhowe, after v9.1.0096) +Solution: Use a default context length of 0, update diff() help text, + add a test for using diff() with 'diffexpr' (Yegappan Lakshmanan). + +Patch 9.1.0100 +Problem: When undoing with 'spell', redrawWinline() is called after + changed_lines(), while later win_update() sets redraw type to + UPD_NOT_VALID, even though w_redraw_top and w_redraw_bot are + still valid. +Solution: Only set redraw type to UPD_NOT_VALID when inserting/deleting + lines after parts of window has pending redraw, i.e., when + changed_lines() is called after redrawWinline() (zeertzjq). + +Patch 9.1.0101 +Problem: upper-case of ß should be U+1E9E (CAPITAL LETTER SHARP S) + (fenuks) +Solution: Make gU, ~ and g~ convert the U+00DF LATIN SMALL LETTER SHARP S (ß) + to U+1E9E LATIN CAPITAL LETTER SHARP S (ẞ), update tests + (glepnir) + +Patch 9.1.0102 +Problem: settabvar() may change the last accessed tabpage. +Solution: Save and restore lastused_tabpage (zeertzjq). + +Patch 9.1.0103 +Problem: 'breakindentopt' "min" works incorrectly with 'signcolumn'. +Solution: Use win_col_off() and win_col_off2() (zeertzjq). + +Patch 9.1.0104 +Problem: Linking fails with -lto because of PERL_CFLAGS (Zoltan Toth) +Solution: Filter out -flto argument from Perl CFLAGS. + +Patch 9.1.0105 +Problem: Style: typos found +Solution: correct them (zeertzjq). + +Patch 9.1.0106 +Problem: Visual highlight hard to read with 'termguicolors' (Maxim Kim) +Solution: Set Visual GUI foreground to black (with background=light) + and lightgrey (with background=dark) (Maxim Kim). + +Patch 9.1.0107 +Problem: CI: Fix MacOS-14 tests (after 9.1.0070) +Solution: Re-enable sound tests by granting Mic access, disable + Test_diff_screen because of buggy MacOS diff (non GNU version), + re-enable Test_term_gettitle() (Yee Cheng Chin) + +Patch 9.1.0108 +Problem: filetype: no support for dtso files +Solution: Add detection for *.dtso files as dts file type (Markus + Schneider-Pargmann) + +Patch 9.1.0109 +Problem: filetype: no support for its files +Solution: Add detection for *.its files as dts file type (Brandon Maier) + +Patch 9.1.0110 +Problem: No support for Config.in filetype +Solution: filetype: add 'Config.in' filetype detection + +Patch 9.1.0111 +Problem: filetype: no support for bats files +Solution: Add .bats filetype support + +Patch 9.1.0112 +Problem: When the quickfix buffer has been modified an autocommand may + invalidate the undo stack (kawarimidoll) +Solution: When clearing the quickfix buffer, also wipe the undo stack + +Patch 9.1.0113 +Problem: duplicate code when cleaning undo stack +Solution: refactor undo cleanup into a single public function + +Patch 9.1.0114 +Problem: Setting some options changes curswant unnecessarily. +Solution: Add a P_HLONLY flag that prevents changing curswant (zeertzjq). + +Patch 9.1.0115 +Problem: Using freed memory with full tag stack and user data + (Konstantin Khlebnikov) +Solution: Clear the user data pointer of the newest entry (zeertzjq, + Konstantin Khlebnikov). + +Patch 9.1.0116 +Problem: win_split_ins has no check for E36 when moving an existing + window +Solution: check for room and fix the issues in f_win_splitmove() + (Sean Dewar) + +Patch 9.1.0117 +Problem: win_splitmove fires WinNewPre and possibly WinNew when moving + windows, even though no new windows are created. +Solution: Don't fire WinNew and WinNewPre when inserting an existing window, + even if it isn't the current window. Improve the accuracy of related + documentation. (Sean Dewar) + +Patch 9.1.0118 +Problem: saving and restoring all frames to split-move is overkill now + that WinNewPre is not fired when split-moving. +Solution: defer the flattening of frames until win_split_ins begins + reorganising them, and attempt to restore the layout by undoing our + changes. (Sean Dewar) + +Patch 9.1.0119 +Problem: can switch windows while textlocked via f_win_gotoid and + f_win_splitmove (which also allows switching in the cmdwin). +Solution: Check text_or_buf_locked in f_win_splitmove() (Sean Dewar) + +Patch 9.1.0120 +Problem: hard to get visual region using Vim script +Solution: Add getregion() Vim script function (Shougo Matsushita, Jakub + Łuczyński) + +Patch 9.1.0121 +Problem: infinite loop in win_update with 'smoothscroll' set when + window width is equal to textoff, or signed integer overflow + if smaller. +Solution: Don't revalidate wp->w_skipcol in that case, as no buffer text + is being shown. (Sean Dewar) + +Patch 9.1.0122 +Problem: Some minor issues with the getregion() function +Solution: Fix examples in the help, use OP_NOP op_type and MBLOCK + as motion_type in f_getreg(), update vim syntax to for getregion() + (Maxim Kim) + +Patch 9.1.0123 +Problem: MS-Windows: system() may deadlock when calling binaries that + expect stdin +Solution: Ignore the SHELL_EXPAND flag (GuyBrush) + +Patch 9.1.0124 +Problem: Virtual text with text_align 'right'/'below' wasn't being used when + a non-virtual text property overlaps with the end of the line. This + was because the non-virtual text property had a higher priority, + preventing the virtual text from being used. +Solution: Fix the sorting of text properties so virtual text properties have a + higher priority than non-virtual text properties (Dylan + Thacker-Smith). + +Patch 9.1.0125 +Problem: unused init of text_prop_idxs in win_line +Solution: Remove it, fix typo (Dylan Thacker-Smith). + +Patch 9.1.0126 +Problem: Internal error when passing mark in another buffer to getregion(). +Solution: Don't allow marks in another buffer (zeertzjq) + +Patch 9.1.0127 +Problem: Naming a non-pointer variable "oap" is strange. +Solution: Rename it to "oa". Also prevent using freed memory in case of memory + allocation failure (zeertzjq). + +Patch 9.1.0128 +Problem: win_gotoid() checks for textlock and other things when switching + to a window that is already current (after v9.1.0119) +Solution: return early with success when attempting to switch to curwin + (Sean Dewar) + +Patch 9.1.0129 +Problem: Virtual text with text_wrap 'wrap' was effectively being truncated + by a break conditional on the EOL list character being added to the + screen line. (BigPeet) +Solution: Remove the condition that was leading to the early break and instead + fix a similar but incorrectly written outer condition that checks if + there is more to add at the end of the screen line. (Dylan + Thacker-Smith) + +Patch 9.1.0130 +Problem: heap-use-after-free in win_splitmove if Enter/Leave autocommands + from win_split_ins immediately closes "wp". +Solution: check that "wp" is valid after win_split_ins (Sean Dewar). + +Patch 9.1.0131 +Problem: buffer-completion code too complicated and does not always find all + matches (irisjae) +Solution: do not try to anchor pattern to beginning of line or + directory-separator, always return all matches + +Patch 9.1.0132 +Problem: using "C" and 've=all' set, doesn't include composing chars when + changing a line, keeps the composing chars for whatever is typed + afterwards. +Solution: Use mb_head_off() and mb_ptr2len() instead of mb_tail_off(). + (zeertzjq) + +Patch 9.1.0133 +Problem: font ligatures don't render correctly in the Win32 GUI-version of + gvim even when set rop=type:directx is used. Setting guiligatures + also doesn't make any difference. This leads to broken font + ligatures when the cursor passes through them. It does not recover + from this, and they remain broken until you re-render the whole + buffer (e.g. by using Ctrl+L). +Solution: The problem is that we only re-draw the current and previous + character in gui_undraw_cursor() and only have the special case for + GTK when it comes to rendering ligatures. So let's enable + gui_adjust_undraw_cursor_for_ligatures() to also happen for Win32 + GUI if guiligatures is setup correctly (all this does is expand the + range of gui_undraw_cursor() with ligature characters). + +Patch 9.1.0134 +Problem: Test_term_gettitle() is flaky on MacOS 14 and Github runners +Solution: Skip the test on Github CI + +Patch 9.1.0135 +Problem: Insufficient testing for 'delcombine'. +Solution: Add test for both Normal and Insert modes without Arabic (zeertzjq). + +Patch 9.1.0136 +Problem: Vim9: need more test for exists() +Solution: Add test for exists() with class/objct variables and methods + (Yegappan Lakshmanan) + +Patch 9.1.0137 +Problem: in cmdline mode doesn't delete composing chars +Solution: Use mb_head_off() and mb_ptr2len() (zeertzjq). + +Patch 9.1.0138 +Problem: too many STRLEN calls when getting a memline +Solution: Optimize calls to STRLEN(), add a few functions in memline.c + that return the byte length instead of relying on STRLEN() (John + Marriott). + +Patch 9.1.0139 +Problem: MS-Windows: ligatures map cleared on startup +Solution: Don't clear the ligatures_map, if the guiligatures option has + already been set (Erik S. V. Jansson) + +Patch 9.1.0140 +Problem: The cursor screen row was incorrectly being calculated when the + cursor follows a 1 character text_align 'below' virtual text line, + resulting in the cursor being shown on the wrong line. This was + caused by a cell size of 2 instead of 1 being used for the EOL + character, which propagated to the calculation of space for putting + the 'below' virtual text on its own line. (rickhowe) +Solution: Fix the size used for the EOL character in calculating the cursor's + screen position (Dylan Thacker-Smith). + +Patch 9.1.0141 +Problem: Put in Visual mode wrong if it replaces fold marker. +Solution: Temporarily disable folding during put in Visual mode (zeertzjq). + +Patch 9.1.0142 +Problem: getregion() can be improved (after v9.1.120) +Solution: change getregion() implementation to use pos as lists and one + optional {opt} dictionary (Shougo Matsushita) + +Patch 9.1.0143 +Problem: [security]: autocmd cause use-after-free in set_curbuf() + (kawarimidoll) +Solution: check side-effect of BufLeave autocommand, when the number + of windows changed, close windows containing buffers that will + be wiped, if curbuf changed unexpectedly make sure b_nwindows + is decremented otherwise it cannot be wiped + +Patch 9.1.0144 +Problem: getregion() needs more tests +Solution: Run the getregion() test in both the legacy and Vim9 contexts + (Yegappan Lakshmanan) + +Patch 9.1.0145 +Problem: the amount of available space (v:echospace) on the command line is + not correct when showcmdloc is drawn into the statusline or tabline. +Solution: only add SHOWCMD_COLS to the shown command column when 'showcmdloc' + is set to last (Sam-programs) + +Patch 9.1.0146 +Problem: v:echospace wrong after setting invalid value to 'showcmdloc'. +Solution: Only call comp_col() if value is valid (zeertzjq). + +Patch 9.1.0147 +Problem: Cannot keep a buffer focused in a window (Amit Levy) +Solution: Add the 'winfixbuf' window-local option (Colin Kennedy). + +Patch 9.1.0148 +Problem: Vim9: can't call internal methods with objects +Solution: Add support for empty(), len() and string() function calls for + objects (Yegappan Lakshmanan) + +Patch 9.1.0149 +Problem: qf_goto_win_with_qfl_file may check if prevwin has 'winfixbuf' + set without checking if it's valid first. +Solution: Reverse the condition. Add a test, a modeline, and a missing + CheckFeature. (Searn Dewar) + +Patch 9.1.0150 +Problem: several minor 'winfixbuf' issues exist, mostly relating to the + quickfix list +Solution: address them and adjust tests. Retab and reflow a few things too. + (Sean Dewar) + +Patch 9.1.0151 +Problem: ml_get_buf_len() does not consider text properties (zeertzj) +Solution: Store text length excluding text properties length + in addition in the memline + +Patch 9.1.0152 +Problem: Coverity complains about ignoring return value of win_split() + (after v9.1.150) +Solution: Check if win_split() failed, add winfixbuf.res to Makefile + +Patch 9.1.0153 +Problem: Text properties corrupted with fo+=aw and backspace +Solution: Allocate line and move text properties (zeertzjq). + +Patch 9.1.0154 +Problem: shm=F not respected when reloading buffer with 'autoread' +Solution: Check SHM_FILEINFO in buf_check_timestamp() (Shougo Matsushita). + +Patch 9.1.0155 +Problem: can only call getregion() for current buffer +Solution: Allow to retrieve selections from different buffers (Shougo + Matsushita). + +Patch 9.1.0156 +Problem: may not be clear why failing to split causes an ":Xdo" command to + abort if 'wfb' is set. +Solution: Do not return immediately if win_split fails, so E1513 is still + given. Expect both errors in the test. Also fix tests to pass CI + (Sean Dewar). + +Patch 9.1.0157 +Problem: Duplicate assignment in f_getregion(). +Solution: Remove the duplicate assignment. Also improve getregion() docs + wording and fix an unrelated typo (zeertzjq). + +Patch 9.1.0158 +Problem: 'shortmess' "F" flag doesn't work properly with 'autoread' + (after 9.1.0154) +Solution: Hide the file info message instead of the warning dialog + (zeertzjq) + +Patch 9.1.0159 +Problem: Crash in WinClosed after BufUnload closes other windows +Solution: Don't trigger WinClosed if the buffer is NULL (zeertzjq). + + +Patch 9.1.0160 +Problem: Add support for using a class type of itself in an object method + (thinca) +Solution: Vim9: Add support for using a class type of itself in an + object method (Yegappan Lakshmanan) + +Patch 9.1.0161 +Problem: expand() removes a slash after an environment variable that ends + with a colon on Windows. +Solution: Check the correct char for a colon (zeertzjq) + +Patch 9.1.0162 +Problem: Problem with writing extended attributes on failure +Solution: Change return type to ssize_t and check listxattr's return + value correctly on failure (Paul Tagliamonte) + +Patch 9.1.0163 +Problem: Calling STRLEN() to compute ml_line_textlen when not needed. +Solution: Use 0 when STRLEN() will be required and call STRLEN() later. + (zeertzjq) + +Patch 9.1.0164 +Problem: Internal error or crash when passing invalid position to + getregion(). +Solution: Give an error for invalid position (zeertzjq). + +Patch 9.1.0165 +Problem: Vim9: Importing an autoload imported script fails + (Song-Tianxiang) +Solution: Return the script ID in this case (Yegappan Lakshmanan). + +Patch 9.1.0166 +Problem: Internal error with blockwise getregion() in another buffer +Solution: Also change curwin->w_buffer when changing curbuf (zeertzjq). + +Patch 9.1.0167 +Problem: Changing buffer in another window using win_execute() causes + it to show matchparen (after 9.0.0969). +Solution: Delay highlighting with SafeState in BufWinEnter (zeertzjq). + +Patch 9.1.0168 +Problem: too many STRLEN() calls +Solution: Make use of ml_get_len() calls instead (John Marriott). + +Patch 9.1.0169 +Problem: current window number returned by tabpagewinnr may be outdated when + called from win_execute for the original tabpage. +Solution: update the original tabpage's tp_curwin in switch_win; use + {un}use_tabpage instead. Don't do it in restore_win to ensure + tp_curwin of the temporarily visited tabpage is unchanged from + switch_win visiting it, as before. (Sean Dewar) + +Patch 9.1.0170 +Problem: more places exist where curwin == prevwin, and it may even be + expected in some cases. +Solution: revert v9.1.0001, but document that it's possible instead. + (Sean Dewar) + +Patch 9.1.0171 +Problem: small improvements can be made to split-move related functions. +Solution: apply them (Sean Dewar): + +Patch 9.1.0172 +Problem: More code can use ml_get_buf_len() instead of STRLEN(). +Solution: Change more STRLEN() calls to ml_get_buf_len(). Also do not + set ml_line_textlen in ml_replace_len() if "has_props" is set, + because "len_arg" also includes the size of text properties in + that case (zeertzjq). + +Patch 9.1.0173 +Problem: msgfmt ver. 0.22 forcibly converts text to UTF-8 +Solution: use '--no-convert' if msgfmt supports it. Add a configure + check for the msgfmt version (RestorerZ). + +Patch 9.1.0174 +Problem: 'cursorline' and 'wincolor' highlight missing with concealed and + wrapped lines. +Solution: Apply 'cursorline' and 'wincolor' highlight to boguscols. + (zeertzjq) + +Patch 9.1.0175 +Problem: winframe functions incorrectly recompute window positions if + the altframe wasn't adjacent to the closed frame, which is + possible if adjacent windows had 'winfix{width,height}' set. +Solution: recompute for windows within the parent of the altframe and + closed frame. Skip this (as before) if the altframe was + top/left, but only if adjacent to the closed frame, as + positions won't change in that case. Also correct the return + value documentation for win_screenpos. (Sean Dewar) + +Patch 9.1.0176 +Problem: Cursor column wrong with 'virtualedit' and conceal. +Solution: Correct cursor column at end of line if never reached (zeertzjq). + +Patch 9.1.0177 +Problem: Coverity reports dead code. +Solution: Remove the dead code. Also fix a mistake in ml_get_pos_len() + and update some comments (zeertzjq). + +Patch 9.1.0178 +Problem: E1513 might be confusing (Christoph Thoma) +Solution: Reword error message, fix test to not depend on the actual message. + +Patch 9.1.0179 +Problem: 'wincolor' highlight missing with "below" virtual text. +Solution: Subtract n_attr_skip from n_attr. Combine 'wincolor' with other + highlights when 'nowrap' is set (zeertzjq). + +Patch 9.1.0180 +Problem: Cursor pos wrong when double-width chars are concealed. +Solution: Advance one more virtual column for a double-width char. Run some + tests with both 'wrap' and 'nowrap' (zeertzjq). + +Patch 9.1.0181 +Problem: no overflow check for string formatting +Solution: Check message formatting function for overflow (Chris van Willegen). + +Patch 9.1.0182 +Problem: Can define function with invalid name inside 'formatexpr'. +Solution: Use goto instead of checking for did_emsg later (zeertzjq). + +Patch 9.1.0183 +Problem: Wrong display or screenpos() result when toggling diff mode. +Solution: Reset w_skipcol when disabling 'wrap'. Reset w_leftcol when + enabling 'wrap' (zeertzjq). + +Patch 9.1.0184 +Problem: Cursor position wrong when clicking with conceal and wrap. +Solution: Use the virtual column of the last char for ScreenCols[] in + boguscols. Remove use of MAXCOL in ScreenCols[]. Rename + third argument of wlv_screen_line() to "clear_end" as that's + clearer what it does (zeertzjq). + +Patch 9.1.0185 +Problem: 'wincolor' highlight missing with 'rightleft', "below" virtual + text and 'nowrap'. +Solution: Handle 'rightleft' in draw_screen_line() (zeertzjq). + +Patch 9.1.0186 +Problem: Wrong cursor position when clicking after end of line with + 'rightleft', 'virtualedit' and conceal. +Solution: Set values in ScreenCols[] also with SLF_RIGHTLEFT. Also fix + off-by-one cursor position with 'colorcolumn' (zeertzjq). + +Patch 9.1.0187 +Problem: Dafny files are not recognized. +Solution: Recognize *.dfy files as filetype "dafny" (zeertzjq). + +Patch 9.1.0188 +Problem: Vento files are not recognized. +Solution: Recognize *.vto files as filetype "vento" (wrapperup) + +Patch 9.1.0189 +Problem: Memory leak with "above" virtual text and 'relativenumber'. +Solution: Free "text_props" and "text_prop_idxs" before returning. + Also fix off-by-one error causing line number to be drawn + beyond end of window (zeertzjq). + +Patch 9.1.0190 +Problem: complete_info() returns wrong order of items (after v9.0.2018) +Solution: Revert Patch v9.0.2018 (Girish Palya) + +Patch 9.1.0191 +Problem: Installer does not remove all files +Solution: Update installer and delete all files on uninstall update Sodium + library dependency, update Readme (RestorerZ) + +Patch 9.1.0192 +Problem: :drop tries to :rewind the argumentlist, which results in E37 + (after v9.1.0046) +Solution: Instead of calling ex_rewind(), call open_buffer() only when + re-using the initial empty buffer + +Patch 9.1.0193 +Problem: May leak memory in completion when ga_grow() fails. +Solution: Free "wca" when ga_grow() fails (zeertzjq). + +Patch 9.1.0194 +Problem: gcc complains about uninitialized var (Tony Mechelynck) +Solution: Initialize to NULL + +Patch 9.1.0195 +Problem: memleak with ex_drop(), NULL dereference (zeertzjq) +Solution: Revert back to ex_rewind(), use curbuf instead of buf + +Patch 9.1.0196 +Problem: filetype: support for gnuplot files is lacking +Solution: Also detect *.gnuplot files (RobbiZ98). + +Patch 9.1.0197 +Problem: Vim9: problem evaluating negated boolean logic (lxhillwind) +Solution: Don't clear the first value on short circuit evaluation + (Yegappan Lakshmanan) + +Patch 9.1.0198 +Problem: Vim9: compound operators broken for lambdas in an object + (girishji) +Solution: When using an object from the outer scope, use the LOADOUTER + instruction to load the object (Yegappan Lakshmanan). + +Patch 9.1.0199 +Problem: Not enough tests for the slice() function. +Solution: Test with multibyte chars, and in both Legacy and Vim9 script. + Update docs to be clearer about how it treats composing chars + (zeertzjq). + +Patch 9.1.0200 +Problem: `gj`/`gk` was updating the desired cursor virtual column to + the outer virtual text, even though the actual cursor position + was moved to not be on the virtual text, leading the need to + do an extra `gj`/`gk` to move past each virtual text line (rickhowe). +Solution: Exclude the outer virtual text when getting the line length + for moving the cursor with `gj`/`gk`, so that no extra movement is + needed to skip over virtual text lines (Dylan Thacker-Smith). + +Patch 9.1.0201 +Problem: `gM` would include outer virtual text and its padding when + getting the line length used to calculate the middle of the + line, putting the cursor much closer to virtual text lines. +Solution: Exclude outer virtual text in getting the line length for + `gM`, so that virtual text doesn't influence where the cursor + is moved to (Dylan Thacker-Smith). + +Patch 9.1.0202 +Problem: leaking memory in add_user() (LuMingYinDetect) +Solution: Free user_copy pointer instead of the user ptr + +Patch 9.1.0203 +Problem: build-error on GNU HURD +Solution: Define _XOPEN_SOURCE like for Android and Cygwin + (James McCoy) + +Patch 9.1.0204 +Problem: Backspace inserts spaces with virtual text and 'smarttab'. +Solution: Ignore virtual text and wrapping when backspacing (zeertzjq). + +Patch 9.1.0205 +Problem: Cannot use modifiers before :-Ntabmove. +Solution: Check backwards from the command instead of checking from the start + of the command line. Slightly adjust docs to make them more + consistent (zeertzjq). + +Patch 9.1.0206 +Problem: unused display_text_first boolean var in win_line() +Solution: Remove unused display_text_first boolean variable + (Dylan Thacker-Smith) + +Patch 9.1.0207 +Problem: No autocommand when writing session file +Solution: Add SessionWritePost autocommand (Colin Kennedy). + +Patch 9.1.0208 +Problem: winfixbuf does not allow to re-edit current buffer + (Tim Pope, after v9.1.0147) +Solution: Explicitly allow :e even when 'winfixbuf' is set, + since it just re-loads the current buffer (Colin Kennedy). + +Patch 9.1.0209 +Problem: leaking memory in exe_newdict() on error (LuMingYinDetect) +Solution: free allocated dict if GA_GROW_FALIS() + +Patch 9.1.0210 +Problem: Motif: leaking memory when mui_mch_dialog() fails (LuMingYinDetect) +Solution: When allocating the label using the XmStringCreateLtoR() + function fails, before returning also free the allocated + buttons pointer. + +Patch 9.1.0211 +Problem: Page-wise scrolling with Ctrl-F/Ctrl-B implements it's own logic to + change the topline and cursor. In doing so, skipcol is not handled + properly for 'smoothscroll', and virtual lines. +Solution: Re-use the logic from Ctrl-E/Ctrl-Y while staying backward + compatible as much as possible. + +Patch 9.1.0212 +Problem: CI: MS-Windows fails in test_winfixbuf (after v9.1.208) +Solution: Skip Ms-Windows for now, fix style + +Patch 9.1.0213 +Problem: CI: MS-Windows fails in test_winfixbuf (after v9.1.208) +Solution: Instead of skipping the test, write the file so it exists on disk, + to verify that MS-Windows short filename expansion is successful. + (Sean Dewar) + +Patch 9.1.0214 +Problem: Duplicate condition in win_lbr_chartabsize(). +Solution: Remove the duplicate condition, as it's already checked above. + (zeertzjq) + +Patch 9.1.0215 +Problem: Page-wise scrolling with Ctrl-D/Ctrl-U implements + it's own logic to change the topline and cursor. + More logic than necessary for scrolling with Ctrl-F/Ctrl-B + was removed in Patch 9.1.0211. +Solution: Re-use the logic from Ctrl-E/Ctrl-Y/Ctrl-F/Ctrl-B while + staying backward compatible as much as possible. + Restore some of the logic that determined how many lines will + be scrolled (Luuk van Baal) + +Patch 9.1.0216 +Problem: Error on exit with EXITFREE and 'winfixbuf'. +Solution: Handle DT_FREE before checking for 'winfixbuf' (zeertzjq). + +Patch 9.1.0217 +Problem: regexp: verymagic cannot match before/after a mark +Solution: Correctly check for the very magic check (Julio B) + +Patch 9.1.0218 +Problem: Unnecessary multiplications in backspace code, as "col / ts * ts" is + the same as "col - col % ts". +Solution: Change "col / ts * ts" to "col - col % ts". Adjust the loop + and the comments ins_bs() to be easier to understand. Update + tests to reset 'smarttab' properly (zeertzjq). + +Patch 9.1.0219 +Problem: No enum support +Solution: Implement enums for Vim9 script (Yegappan Lakshmanan) + +Patch 9.1.0220 +Problem: Typos in code and tests. +Solution: Fix typos (zeertzjq). + +Patch 9.1.0221 +Problem: The if branch to set `text_prop_follows` was both checking if + it was at the end of the buffer text line or if it was at the + end of the screen line, but the former being true skipped + a guard condition in the latter to only consider 'below' + virtual text to follow. `text_prop_follows` being improperly + set caused it to skip a conditional block to break at the end + as well as one to move `ptr` to the end of the text line, + while repeated for each following line of the window. +Solution: Move the check for whether 'below' virtual text should follow + so it is also used when at the end of the buffer text line. + (Dylan Thacker-Smith) + +Patch 9.1.0222 +Problem: When a line is truncated just before 'after'/'right' virtual + text and the line also has 'below' virtual text, then the + 'below' virtual text would not be displayed, depending on the + order these text properties were added. +Solution: In the loop to make text properties active, skip instead of + break for 'after'/'right' virtual text properties that are + ignored due to truncation, so following 'below' text properties can + still be made active. Similarly, a loop is needed to determine if a + text property follows at the end of the screen. (Dylan + Thacker-Smith) + +Patch 9.1.0223 +Problem: There are two dense conditions with duplication that needs to + be kept in sync between the while loop break condition and the + condition to skip certain text properties. +Solution: Refactor the loop by moving while loop conditions into the body of + the while loop so they can be shared with skip conditions. `break` + and an `active` variable are used to handle the outcome of these + merged conditions (Dylan Thacker-Smith). + +Patch 9.1.0224 +Problem: If a line has "right" & "below" virtual text properties, where the + "below" property may be stored first due to lack of ordering between + them, then the line height is calculated to be 1 more and causes the + cursor to far over the line. +Solution: Remove some unnecessary setting of a `next_right_goes_below = TRUE` + flag for "below" and "above" text properties. (Dylan Thacker-Smith) + +Patch 9.1.0225 +Problem: test_matchparen not run in CI +Solution: add test_matchparen.res to NEW_TESTS_RES in Makefile, update changed + highlighting dump from v9.1.61 + +Patch 9.1.0226 +Problem: Not able to assign enum values to an enum static variable + (zzzyxwvut) +Solution: Make it work (Yegappan Lakshmanan) + +Patch 9.1.0227 +Problem: Recording may still be wrong in Select mode (after 8.2.3993). +Solution: Make sure a character isn't split between two buffer blocks + (zeertzjq). + +Patch 9.1.0228 +Problem: Two unrelated things are tested by a single test. +Solution: Split it into two, restoring the old Test_brace_single_line(). + Add missing cleanup to some tests (zeertzjq). + +Patch 9.1.0229 +Problem: Error E877 is not translated (RestorerZ) +Solution: Declare the error with N_ to mark it as translatable, add _() + around the error message in regexp_nfa.c + +Patch 9.1.0230 +Problem: TextChanged autocommand not triggered under some circumstances + (Sergey Vlasov) +Solution: Trigger TextChanged when TextChangedI has not been triggered + +Patch 9.1.0231 +Problem: Filetype may be undetected when a SwapExists autocommand sets + filetype in another buffer. +Solution: Make filetype detection state buffer-specific. Also fix a + similar problem for 'modified' (zeertzjq). + +Patch 9.1.0232 +Problem: Conceal test fails when rightleft feature is disabled. +Solution: Skip test if rightleft feature is missing (Julio B). + +Patch 9.1.0233 +Problem: Vim9: string() output of enum is problematic +Solution: Make string() output for an enum consistent with that of a + regular object (Yegappan Lakshmanan). + +Patch 9.1.0234 +Problem: filetype: support for Intel HEX files is lacking +Solution: Add more file extensions that are typical for Intel HEX files + (Wu, Zhenyu) + +Patch 9.1.0235 +Problem: filetype: supertux files are not recognized +Solution: Supertux uses lisp to store hotkeys in config and game stage + information, so add a pattern for supertux files (Wu, Zhenyu). + +Patch 9.1.0236 +Problem: filetype: texlua files are not recognized +Solution: Add '*.tlu' pattern for texlua files (Wu, Zhenyu) + +Patch 9.1.0237 +Problem: filetype: mplstyle files are not recognized +Solution: Detect '*.mplstyle' files as yaml (Wu, Zhenyu) + +Patch 9.1.0238 +Problem: filetype: jupyterlab and sublime config are not recognized +Solution: Detect jupyterlab and sublime config files as json (Wu, Zhenyu). + +Patch 9.1.0239 +Problem: filetype: gnuplot history files are not recognised +Solution: detect .gnuplot_history files as gnuplot (Wu, Zhenyu). + +Patch 9.1.0240 +Problem: filetype: some python tools config files are not recognized +Solution: Detect config files for setuptools, pudb, coverage as dosini + (Wu, Zhenyu) + +Patch 9.1.0241 +Problem: filetype: mysql history files are not recognized +Solution: Detect .mysql_history as mysql (Wu, Zhenyu). + +Patch 9.1.0242 +Problem: filetype: octave history files are not recognized +Solution: Detect octave/history files as octave (Wu, Zhenyu). + +Patch 9.1.0243 +Problem: filetype: netrw history file is not recognized +Solution: Detect .netrwhist as vim files (Wu, Zhenyu). + +Patch 9.1.0244 +Problem: filetype: bash history files are not recognized +Solution: detect .bash-history and .bash_history files as bash (Wu, Zhenyu). + +Patch 9.1.0245 +Problem: filetype: zsh theme, history and zunit files are not + recognized. +Solution: Detect '.zsh_history', '*.zsh-theme' and '*.zunit' as zsh + (Wu, Zhenyu) + +Patch 9.1.0246 +Problem: filetype: fontconfig files are not recognized +Solution: detect 'fonts.conf' as xml (Wu, Zhenyu). + +Patch 9.1.0247 +Problem: filetype: bundle config files are not recognized +Solution: Detect '*/.bundle/config' as yaml (Wu, Zhenyu). + +Patch 9.1.0248 +Problem: filetype: yarn lock files are not recognized +Solution: Detect 'yarn.lock' files as yaml (Wu, Zhenyu). + +Patch 9.1.0249 +Problem: filetype: rock_manifest and config.ld files are not recognized +Solution: Detect 'rock_manifest' and 'config.ld' as lua (Wu, Zhenyu). + +Patch 9.1.0250 +Problem: filetype: ldscripts cannot be recognized +Solution: Detect '*/ldscripts/*' as ld (Wu, Zhenyu). + +Patch 9.1.0251 +Problem: Filetype test fails. +Solution: Move detection by name before detection by extension. + Improve TextChanged test and remove wrong test and fix + a typo in a comment (zeertzjq). + +Patch 9.1.0252 +Problem: Vim9: segfault with static in super class (Ernie Rael) +Solution: When initializing lhs, use the correct class where a class + variable is defined (Yegappan Lakshmanan) + +Patch 9.1.0253 +Problem: filetype: typespec files are not recognized +Solution: Detect '*.tsp' files as typespec (Hilmar Wiegand) + +Patch 9.1.0254 +Problem: [security]: Heap buffer overflow when calling complete_add() + in the first call of 'completefunc' +Solution: Call check_cursor() after calling 'completefunc' (zeertzjq). + +Patch 9.1.0255 +Problem: Vim9: no indication of script nr in stack trace of classes +Solution: Prefix the class name with the script name in the stack trace. + (Ernie Rael) + +Patch 9.1.0256 +Problem: Finding autocmd events is inefficient +Solution: Use binary search to find events, cache last found events, + avoid use of strlen(), add SessionWritePost autocmd, fix + test_codestyle and avoid endless loop (John Marriott). + +Patch 9.1.0257 +Problem: Vim9: :call may not find imported class members (mityu) +Solution: Set the typval of an imported lval variable correctly + (Yegappan Lakshmanan) + +Patch 9.1.0258 +Problem: Support for 'smoothscroll' in (half-)page scrolling + broke backward compatibility and can be made to work better. + (after v9.1.215) +Solution: Restore the previous cursor and end-of-buffer behavior for + half-page scrolling and improve 'smoothscroll' support. + (Luuk van Baal) + +Patch 9.1.0259 +Problem: Normal mode TextChanged isn't tested properly. +Solution: Combine Test_Changed_ChangedI() and Test_Changed_ChangedI_2() + and also run it on Windows. Fix a typo in main.c (zeertzjq). + +Patch 9.1.0260 +Problem: "zb" does not reveal filler lines at the start of a buffer. + Scrolled cursor position with 'smoothscroll' is unpredictable, + and may reset skipcol later if it is not visible (after v9.1.258) +Solution: Replace confusing for loop that reaches final control value too + early with while loop. Set "w_curswant" accordingly so cursor + will be placed in visible part of topline (Luuk van Baal). + +Patch 9.1.0261 +Problem: Vim9: protected class and funcrefs accessible outside the class + (Aliaksei Budavei) +Solution: Check if class and object funcrefs are protected + (Yegappan Lakshmanan) + +Patch 9.1.0262 +Problem: Test for TextChanged is flaky with ASAN. +Solution: Wait for the file to be non-empty (zeertzjq). + +Patch 9.1.0263 +Problem: Vim9: Problem with lambda blocks in enums and classes + (Aliaksei Budavei) +Solution: Support evaluating lambda blocks from a string, skip over + comments (Yegappan Lakshmanan) + +Patch 9.1.0264 +Problem: libgpm may delete some signal handlers +Solution: Restore these signal handlers after calling gpm (Julio B). + +Patch 9.1.0265 +Problem: console dialog cannot save unnamed buffers +Solution: Set bufname before save (glepnir). Define dialog_con_gui + to test for GUI+Console dialog support, use it to skip + the test when the GUI feature has been defined. + +Patch 9.1.0266 +Problem: filetype: earthfile files are not recognized +Solution: Detect 'Earthfile' as earthfile (Gaëtan Lehmann). + +Patch 9.1.0267 +Problem: File name entered in GUI dialog is ignored (after v9.1.0265) +Solution: Only set file name to "Untitled" if GUI dialog didn't set it. + (zeertzjq) + +Patch 9.1.0268 +Problem: Two tests in test_filechanged.vim are slow. +Solution: Sleep for shorter if the +nanotime feature is available (zeertzjq). + +Patch 9.1.0269 +Problem: Test for TextChanged is still flaky with ASAN. +Solution: Don't index the result of readfile() (zeertzjq). + +Patch 9.1.0270 +Small fixes to a few issues: +Problem: Vim9: funcref pointer pt leaks, when function is not found +Solution: Free funcref pointer in case of error ( +Problem: memory leak of crypt state pointer allocation fails +Solution: free crypt state pointer properly ( +Problem: Vim9: Leaking memory when compiling dict fails +Solution: Free the memory in case of error ( +Problem: Coverity complains about derefencing obj_members pointer + (after v9.1.0261) +Solution: Verify that obj_members ptr is non-null before accessing it + +Patch 9.1.0271 +Problem: CI sound test aborts with undefined variable +Solution: initialize g:result in test_sound.vim + +Patch 9.1.0272 +Problem: Autocommand may change currect directory after :tcd and :lcd. +Solution: Also clear tp_localdir and w_localdir when using aucmd_win. + (zeertzjq) + +Patch 9.1.0273 +Problem: filetype: keymap files are not recognized +Solution: Detect '*.keymap' files as Device Tree Files (0xadk). + +Patch 9.1.0274 +Problem: MS-Windows: a few compiler warnings +Solution: Change variable types to resolve compiler warnings (Mike Williams) + +Patch 9.1.0275 +Problem: filetype: R history files are not recognized +Solution: Detect '.Rhistory' files as r filetype (Wu, Zhenyu). + +Patch 9.1.0276 +Problem: No pandoc syntax support +Solution: Add pandoc syntax and compiler plugins (Wu, Zhenyu, Konfekt). + +Patch 9.1.0277 +Problem: Cannot highlight the Command-line +Solution: Add the MsgArea highlighting group (Shougo Matsushita). + +Patch 9.1.0278 +Problem: filetype: zathurarc files not recognized +Solution: Detect '.zathurarc' files as zathurarc filetype, + add zathurarc filetype (Wu, Zhenyu) + +Patch 9.1.0279 +Problem: filetype: roc files are not recognized +Solution: Detect '*.roc' files as roc filetype, + add a basic filetype plugin (nat-418) + +Patch 9.1.0280 +Problem: Logic to make sure cursor is in visible part of the screen after + scrolling the text with 'smoothscroll' is scattered, asymmetric + and contains bugs. +Solution: Adjust and create helper function for 'smoothscroll' cursor logic. + (Luuk van Baal) + +Patch 9.1.0281 +Problem: CI: fails Test_compiler_completion +Solution: Add pandoc compiler + +Patch 9.1.0282 +Problem: Finding highlighting attributes is inefficient +Solution: Use binary search to find highlighting attributes and color + names (John Marriott) + +Patch 9.1.0282 +Problem: Wrong doc style for pandoc syntax description, + Test_diff_eob_halfpage() may fail depending on screen size, using + braces in highlight.c when not necessary +Solution: Fix pandoc documentation, make sure the window for the test has 7 + lines, remove the braces. + +Patch 9.1.0284 +Problem: make testclean is not able to delete failed screendumps. +Solution: Remove the "failed" directory when necessary (Julio B). + +Patch 9.1.0285 +Problem: Problems with cursor position when scrolling half a page. +Solution: Rework the cursor logic. (Luuk van Baal) + +Patch 9.1.0286 +Problem: Vim9: E1027 with defcompile for abstract methods with + non-void return types, but still compiles it (zzzyxwvut) +Solution: Don't compile abstract methods (Yegappan Lakshmanan). + +Patch 9.1.0287 +Problem: Vim9: comment may be treated as heredoc start (Ernie Rael). +Solution: Use skip_var_list() instead of find_name_end() (zeertzjq). + +Patch 9.1.0288 +Problem: MS-Windows: compiler warning for size_t to int conversion + (after v9.1.0282) +Solution: Use size_t instead of int in highlight_set_termgui_attr + (Mike Williams). + +Patch 9.1.0289 +Problem: filetype: some TeX files are not recognized +Solution: Add more patterns for TeX files and inspect a few more files for + being TeX files (Wu, Zhenyu). + +Patch 9.1.0290 +Problem: filetype: xilinx files are not recognized +Solution: Add a few xilinx specific file patterns, inspect lpr files for being + xml/pascal (Wu, Zhenyu) + +Patch 9.1.0291 +Problem: filetype: libreoffice config files are not recognized +Solution: Detect Libreoffice config fils as xml/dosini (Wu, Zhenyu). + +Patch 9.1.0292 +Problem: filetype: XDG mimeapps.list file is not recognized +Solution: Detect mimeapps.list as dosini filetype (Wu, Zhenyu). + +Patch 9.1.0293 +Problem: filetype: lxqt config files are not recognized +Solution: Detect {lxqt,screengrab}/*.conf files as dosini, + fix failing filetype test for */tex/latex/**.cfg (Wu, Zhenyu). + +Patch 9.1.0294 +Problem: plines_m_win() does not take into account it's "limit_winheight" + argument for filler lines below the last line of the buffer. + (after v9.1.0280) +Solution: Check window height when "limit_winheight" is TRUE (Luuk van Baal). + +Patch 9.1.0295 +Problem: filetype: pip config files are not recognized +Solution: detect pip.conf as dosini filetype (Wu, Zhenyu). + +Patch 9.1.0296 +Problem: Regex engines do not handle case-folding well +Solution: Correctly calculate byte length of characters to skip + +Patch 9.1.0297 +Problem: Patch 9.1.0296 causes too many issues (Tony Mechelynck, @chdiza, CI) +Solution: Back out the change for now + +Patch 9.1.0298 +Problem: MS-Windows: GETTEXT_PATH hard-coded in src/po/Make_mvc.mak +Solution: Add IFNDEF/ENDIF around the definition of GETTEXT_PATH + (Cthulhux) + +Patch 9.1.0299 +Problem: Vim9: return type not set for a lambda assigned to script var + (Ernie Rael) +Solution: Correctly determine the return type (Yegappan Lakshmanan). + +Patch 9.1.0300 +Problem: Missing test for what Patch v9.1.0285 fixes +Solution: Add a test for cursor movement at buffer boundaries (Luuk van Baal). + +Patch 9.1.0301 +Problem: Vim9: heredoc start may be recognized in string. +Solution: Don't skip to closing bracket for invalid list assignment. + (zeertzjq) + +Patch 9.1.0302 +Problem: filetype: blueprint files are not recognized +Solution: Detect '*.bp' files as blueprint files, add a minimal filetype + plugin (Bruno Belanyi) + +Patch 9.1.0303 +Problem: filetype: some protocol buffer files not recognized +Solution: Detect '*.textproto', '*.textpb', '*.txtpb' as pbtxt files + (Bruno Belanyi) + +Patch 9.1.0304 +Problem: filetype: cgdb config file is not recognized +Solution: Detect cgdbrc files as cgdbrc filetype (Wu, Zhenyu). + +Patch 9.1.0305 +Problem: filetype: some history files are not recognized +Solution: Add some history patterns to filetype.vim (Wu, Zhenyu). + +Patch 9.1.0306 +Problem: filetype: x11vnc config file is not recognized +Solution: Detect '.x11vncrc' as conf filetype (Wu, Zhenyu). + +Patch 9.1.0307 +Problem: filetype: texdoc config files is not recognized +Solution: Detect 'texdoc.cnf' as conf filetype (Wu, Zhenyu). + +Patch 9.1.0308 +Problem: configure: msgfmt hardcoded (after v9.1.0173) +Solution: use $MSGFMT instead of msgfmt in configure script, + regenerate the configure script (Vladimír Marek). + +Patch 9.1.0309 +Problem: crash when 'textwidth' > MAX_INT (after vv9.1.0055) + (Zoltan Balogh) +Solution: limit textwidth to MAX_INT + +Patch 9.1.0310 +Problem: Filler lines not checked properly in get_scroll_overlap(). +Solution: Add missing parentheses (zeertzjq). + +Patch 9.1.0311 +Problem: Some config files are not recognized +Solution: Add some patterns for chktex, ripgreprc and ctags config files. + +Patch 9.1.0312 +Problem: heredocs are not supported for :commands (@balki) +Solution: Add heredoc support (Yegappan Lakshmanan). + +Patch 9.1.0313 +Problem: Crash when using heredoc with comment in command block. +Solution: Handle a newline more like the end of the line, fix coverity + warning (zeertzjq). + +Patch 9.1.0314 +Problem: Vim9: Can define a class in a function (Doug Kearns) +Solution: Give an error for a class defined in a function, slightly reword + some public error messages (Yegappan Lakshmanan). + +Patch 9.1.0315 +Problem: filetype: a few more dosini files are not recognized +Solution: Detect wakatime, reply config files, flatpak, nfs config files + and a few more python tools as dosini (or toml) (Wu, Zhenyu). + +Patch 9.1.0316 +Problem: filetype: some sh and confini files not recognized +Solution: Detect neofetch, '.xprofile', XDG-User-Dirs files, paru and makepkg + config files (Wu, Zhenyu). + +Patch 9.1.0317 +Problem: filetype: matplotlibrc files are not recognized +Solution: Detect 'matplotlibrc' file as yaml filetype (Wu, Zhenyu). + +Patch 9.1.0318 +Problem: filetype: translate shell config files are not recognized +Solution: Detect 'init.trans', 'translate-shell' and '.trans' files as + clojure (Wu, Zhenyu) + +Patch 9.1.0319 +Problem: Using heredoc in string not tested with :execute. +Solution: Test with both :execute and execute() (zeertzjq). + +Patch 9.1.0320 +Problem: Wrong cursor position after using setcellwidths(). +Solution: Invalidate cursor position in addition to redrawing (zeertzjq). + +Patch 9.1.0321 +Problem: When used terminal with XON/XOFF flow control, vim tries to + still make CTRL-S mapping available, which results in severe + screen corruption, especially on large redraws, and even + spurious inputs (John Tsiombikas) +Solution: Disallow CTRL-S mapping if such terminal is recognized. + Don't remove IXON from the bitmask inversion (Anton Sharonov). + +Patch 9.1.0322 +Problem: filetype: some mail tools not recognized +Solution: Detect '.mbsncrc' as conf, '.msmtprc' as msmtp and '.notmuch-config' + as ini filetype (Shane-XB-Qian) + +Patch 9.1.0323 +Problem: filetype: cabal config files may not be recognized +Solution: Change filetype pattern to '*/{,.}cabal/config' (Wu Zhenyu). + +Patch 9.1.0324 +Problem: filetype: some json files are not recognized +Solution: Detect '.jscsrc' and '.vsconfig' as jsonc filetype (Wu, Zhenyu). + +Patch 9.1.0325 +Problem: filetype: CMakeCache.txt files not recognized +Solution: Detect 'CMakeCache.txt' files as cmakecache filetype, include basic + syntax script for cmakecache (Wu, Zhenyu, @bfrg) + +Patch 9.1.0326 +Problem: filetype: some requirements files are not recognized +Solution: Detect '*-requirements.txt', 'constraints.txt', 'requirements.in', + 'requirements/*.txt' and 'requires/*.txt' as requirements filetype, + include pip compiler, include requirements filetype and syntax + plugin (Wu, Zhenyu, @raimon49). + +Patch 9.1.0327 +Problem: No support for using $XDG_CONFIG_HOME +Solution: optionally source $XDG_CONFIG_HOME/vim/vimrc (Luca Saccarola). + +Patch 9.1.0328 +Problem: CI fails with t_?? test +Solution: use assert_match instead of assert_equal and test only until t_xo, + depending on system there may be several more termcap codes coming + +Patch 9.1.0329 +Problem: String interpolation fails for Dict type +Solution: Support Dict data type properly, also support :put =Dict + (without having to convert it to string() first) + (Yegappan Lakshmanan). + +Patch 9.1.0330 +Problem: v9.1.0327 contains an unrelated change +Solution: Revert back $USR_VIMRC_FILE to $HOME instead of ~ + +Patch 9.1.0331 +Problem: make install does not install all files (Nick Jensen) +Solution: Adjust the Makefile rule to install and uninstall cargo and + rust directories (Matt Hammerly) + +Patch 9.1.0332 +Problem: tests: some assert_equal() calls have wrong order of args +Solution: Correct the order (zeertzjq). + +Patch 9.1.0333 +Problem: tests: test_xdg fails on the appimage repo +Solution: compare only the last 30 right characters of $MYVIMRC + +Patch 9.1.0334 +Problem: No test for highlight behavior with 'ambiwidth'. +Solution: Add a screendump test for 'ambiwidth' with 'cursorline'. + (zeertzjq) + +Patch 9.1.0335 +Problem: String interpolation fails for List type +Solution: use implicit string(list) for string interpolation and :put = + (Yegappan Lakshmanan) + +Patch 9.1.0336 +Problem: tests: typo in test_xdg +Solution: fix typo (Diego Viola) + +Patch 9.1.0337 +Problem: Missing entry for XDG vimrc file in :version +Solution: Add 4th user vimrc entry to :version output (Diego Viola) + +Patch 9.1.0338 +Problem: Vim9: import through symlinks not correctly handled +Solution: Check for script being a symlink but only once (Ernie Rael) + +Patch 9.1.0339 +Problem: tests: xdg test uses screen dumps +Solution: Convert screen dump to normal test (Yegappan Lakshmanan) + +Patch 9.1.0340 +Problem: Error with matchaddpos() and empty list (@rickhow) +Solution: Return early for an empty list + +Patch 9.1.0341 +Problem: a few memory leaks are found (LuMingYinDetect) +Solution: properly free the memory + +Patch 9.1.0342 +Problem: tests: test_taglist fails when 'helplang' contains non-english +Solution: Allow 1 or 2 tagfiles for now (Julio B) + +Patch 9.1.0343 +Problem: 'showcmd' is wrong for partial mapping with multibyte char, + and isn't very readable with modifyOtherKeys. +Solution: Decode multibyte char and merge modifiers into the char. + (zeertzjq) + +Patch 9.1.0344 +Problem: Cursor wrong after using setcellwidth() in terminal (mikoto2000) +Solution: output additional spaces, so the behaviour matches the GUI + (mikoto2000) + +Patch 9.1.0345 +Problem: gvimrc not sourced from XDG_CONFIG_HOME (after v9.1.0327) +Solution: Also try to source from ~/.config/vim/gvimrc and + $XDG_CONFIG_HOME/vim/gvimrc (Maxim Kim) + +Patch 9.1.0346 +Problem: Patch v9.1.0338 fixed sourcing a script with import +Solution: Add test `import './file.vim' and verify it works with `:source` + so it does not regress (Ernie Rael) + +Patch 9.1.0347 +Problem: A few typos in test_xdg when testing gvimrc +Solution: Fix them (Diego Viola) + +Patch 9.1.0348 +Problem: X11 does not ignore smooth scroll event (laniakea64) +Solution: Correctly ignore unwanted smooth scroll events on X11 (lilydjwg) + +Patch 9.1.0349 +Problem: Vim9: need static type for typealias +Solution: Refactor the typval2type() function and add a static type for + typealias (Yegappan Lakshmanan) + +Patch 9.1.0350 +Problem: tests: test_vim9_dissamble may fail +Solution: Instead of hard-coding the lambda number, accept just any number + (Julio B) + +Patch 9.1.0351 +Problem: No test that completing a partial mapping clears 'showcmd'. +Solution: Complete partial mappings in Test_showcmd_part_map() instead + of using :echo. Adjust some comments (zeertzjq). + +Patch 9.1.0352 +Problem: Finding cmd modifiers and cmdline-specials is inefficient +Solution: Use binary search to find ex command modifiers and + cmdline-special characters and reduce the number of strlen() + (John Marriott) + +Patch 9.1.0353 +Problem: tests: Test_autoload_import_relative_compiled fails on Windows +Solution: Disable on Windows for now, add missing :bw for clean-up (Ernie Rael) + +Patch 9.1.0354 +Problem: runtime(uci): No support for uci file types (Wu, Zhenyu) +Solution: include basic uci ftplugin and syntax plugins (Colin Caine) + +Patch 9.1.0355 +Problem: filetype: flake.lock files are not recognized +Solution: Detect 'flake.lock' as json filetype (Riley Bruins) + +Patch 9.1.0356 +Problem: MS-Windows: --remote may change working directory when + 'shellslash' is set +Solution: normalize directory separators on MS-Windows + +Patch 9.1.0357 +Problem: Page scrolling does not always place the cursor at the top or + bottom of the window (Mathias Rav) +Solution: Place the cursor at the top or bottom of the window (Luuk van Baal) + +Patch 9.1.0358 +Problem: wrong drawing in GUI with setcellwidth() (after v9.1.0344) +Solution: move gui.in_use condition (h-east). + +Patch 9.1.0359 +Problem: MS-Windows: Relative import in a script sourced from a buffer + doesn't work (Ernie Rael) +Solution: Set a filename, so that we are not trying to use + script-relative filename (Yegappan Lakshmanan) + +Patch 9.1.0360 +Problem: Vim9: does not handle autoloaded variables well +Solution: Better handle script-level exported variable references from + autoload files (Ernie Rael). + +Patch 9.1.0361 +Problem: Vim9: vim9type.c is too complicated +Solution: Refactor a few functions in vim9type.c (Yegappan Lakshmanan) + +Patch 9.1.0362 +Problem: expanding rc config files does not work well + (Michał Sieroń, after v9.1.0327) +Solution: initialize chartab option, required to expand + evironment variables + +Patch 9.1.0363 +Problem: tests: test_winfixbuf is a bit slow +Solution: use defer if possible, reset hidden option, use --not-a-term + when starting Vim using system() (Yegappan Lakshmanan) + +Patch 9.1.0364 +Problem: tests: test_vim9_builtin is a bit slow +Solution: source tests from a buffer instead of writing and sourcing a file + (Yegappan Lakshmanan) + +Patch 9.1.0365 +Problem: Crash when typing many keys with D- modifier (after 9.1.0227). +Solution: Don't treat a 0x80 byte inside a special sequence as the start + of a special sequence (zeertzjq). + +Patch 9.1.0366 +Problem: filetype: ondir files are not recognized +Solution: Detect '.ondirrc' as ondir filetype (Jon Parise) + +Patch 9.1.0367 +Problem: compile_def_function is too long +Solution: Move out the code to compile the body of a function + (Yegappan Lakshmanan) + +Patch 9.1.0368 +Problem: MS-Windows: Hard to define the Vim Patchlevel with leading + zeroes for the installer +Solution: re-define VIM_VERSION_PatchLEVEL_STR with leading zeroes, + interpret Patchlevel as decimal in Make_mvc.mak (RestorerZ) + +Patch 9.1.0369 +Problem: Vim9: problem when importing autoloaded scripts +Solution: In `:def` handle storing to vim9 autoload export (Ernie Rael) + +Patch 9.1.0370 +Problem: MS-Windows: Patch number is zero in installer (jonathan-b-wiebe) +Solution: Set VIM_VERSION_PatchLEVEL, fix a few typos in the installer + (RestorerZ) + +Patch 9.1.0371 +Problem: Vim9: compile_def_function() still too long +Solution: Refactor the code into separate functions (Yegappan Lakshmanan). + +Patch 9.1.0372 +Problem: Calling CLEAR_FIELD() on the same struct twice. +Solution: Remove the second CLEAR_FIELD(). Move the assignment of + cookie.sourceing_lnum (zeertzjq). + +Patch 9.1.0373 +Problem: ops.c code uses too many strlen() calls +Solution: Refactor code and remove more strlen() calls (John Marriott). + +Patch 9.1.0374 +Problem: When :edit an existing buffer, line('w$') may return a wrong result. +Solution: Reset w_valid in curwin_init() (Jaehwang Jung) + +Patch 9.1.0375 +Problem: tests: 1-second delay after Test_BufEnter_botline() + (after v9.1.0374) +Solution: Wipe the created buffers (zeertzjq). + +Patch 9.1.0376 +Problem: Vim9: Trailing commands after class/enum keywords ignored +Solution: Remove EX_TRLBAR keyword from command definition + (Yegappan Lakshmanan) + +Patch 9.1.0377 +Problem: formatting text wrong when 'breakindent' is set (Gary Johnson) +Solution: Temporarily disable 'breakindent' option when formatting text, so + that the breakindent is not wrongly taken into account for the line + length + +Patch 9.1.0378 +Problem: Vim9: no comments allowed after class vars + (Christian Robinson, after 9.1.376) +Solution: Allow trailing comments after class vars (Yegappan Lakshmanan). + +Patch 9.1.0379 +Problem: There are a few typos +Solution: Fix them (zeertzjq). + +Patch 9.1.0380 +Problem: Calculating line height for unnecessary amount of lines with + half-page scrolling (zhscn, after 9.1.0280) +Solution: Replace "limit_winheight" argument with higher resolution + "max" argument to which to limit the calculated line height + in plines_m_win() to (Luuk van Baal). + +Patch 9.1.0381 +Problem: cbuffer and similar quickfix and locationlist commands don't + accept a range, even so it is documented they should + (ilan-schemoul, after 8.1.1241) +Solution: Define ex commands with ADDR_LINES instead of ADDR_OTHER + +Patch 9.1.0382 +Problem: Kbuild files are not recognized. +Solution: Detect Kbuild files as make files (Bruno Belanyi). + +Patch 9.1.0383 +Problem: filetype: .out files recognized as tex files +Solution: Do not set an explicit filetype until it is clear what this + should be (shane.xb.qian) + +Patch 9.1.0384 +Problem: tests: vt420 terminfo entry may not be found (Shane-XB-Qian) +Solution: check existence of terminfo vt420 and infocmp command + +Patch 9.1.0385 +Problem: Vim9: crash with null_class and null_object (Aliaksei Budavei) +Solution: Handle null_class and null_object correctly (Yegappan Lakshmanan). + +Patch 9.1.0386 +Problem: filetype: stylus files not recognized +Solution: Detect '*.styl' and '*.stylus' as stylus filetype, + include indent, filetype and syntax plugin (Philip H) + +Patch 9.1.0387 +Problem: Vim9: null value tests not sufficient +Solution: Add a more comprehensive test for null values (Yegappan Lakshmanan). + +Patch 9.1.0388 +Problem: cursor() and getregion() don't handle v:maxcol well. +Solution: Add special handling for v:maxcol like setpos() does (zeertzjq). + +Patch 9.1.0389 +Problem: filetype: templ files are not recognized +Solution: Detect '*.templ' files as filetype templ (Tristan Knight). + +Patch 9.1.0390 +Problem: filetype: inko files are not recognized +Solution: Detect '*.inko' as ink filetype (Yorick Peterse). + +Patch 9.1.0391 +Problem: Vim9: could improve testing (Ernie Rael) +Solution: Support defcompile for test_override() to improve testing + (Yegappan Lakshmanan) + +Patch 9.1.0392 +Problem: tests: Vim9 debug tests may be flaky (Shane-XB-Qian) +Solution: Give a few more lines so that line-wrapping won't + cause a hit-enter prompt + +Patch 9.1.0393 +Problem: 'viewdir' not respecting $XDG_CONFIG_HOME (Danilo Rezende, + after v9.1.327) +Solution: adjust 'viewdir' option when enabling XDG config mode + +Patch 9.1.0394 +Problem: Cannot get a list of positions describing a region + (Justin M. Keyes, after v9.1.0120) +Solution: Add the getregionpos() function (Shougo Matsushita) + +Patch 9.1.0395 +Problem: regionpos may leak memory on error, coverity + complains about dereferencing Null pointer +Solution: free all list pointers (after v9.1.394), + return early if buflist_findnr() returns NULL + +Patch 9.1.0396 +Problem: jj files are not recognized +Solution: recognize '*.jjdescription' files as jj filetype (Gregory Anders) + +Patch 9.1.0397 +Problem: Wrong display with 'smoothscroll' when changing quickfix list. +Solution: Reset w_skipcol when replacing quickfix list (zeertzjq). + +Patch 9.1.0398 +Problem: Vim9: imported vars are not properly type checked +Solution: Check the imported variable type properly (Yegappan Lakshmanan). + +Patch 9.1.0399 +Problem: block_editing errors out when using del (@Jamarley) +Solution: Change ins_len from size_t to int and properly check that it doesn't + become negative + +Patch 9.1.0400 +Problem: Vim9: confusing error message for unknown type (Doug Kearns) +Solution: For an unknown type, display only the type name in the error + message (Yegappan Lakshmanan). + +Patch 9.1.0401 +Problem: filetype: zsh module files are not recognized +Solution: Detect '*.mdh' and '*.epro' as C filetype, '*.mdd' as zsh + filetype, determine zsh-modules '*.pro' from from it's content + (Wu, Zhenyu) + +Patch 9.1.0402 +Problem: filetype: mdd files detected as zsh filetype +Solution: detect '*.mdd' files as sh filetype, add links to reference + documentation (Wu, Zhenyu) + +Patch 9.1.0403 +Problem: Vim9: not able to import file from start dir (Danielle McLean) +Solution: Allow to import from start directory (Yegappan Lakshmanan). + +Patch 9.1.0404 +Problem: [security] xxd: buffer-overflow with specific flags +Solution: Correctly calculate the required buffer space (Lennard Hofmann). + +Patch 9.1.0405 +Problem: tests: xxd buffer overflow fails on 32-bit +Solution: Skip test on 32-bit architecture + +Patch 9.1.0406 +Problem: Divide by zero with getmousepos() and 'smoothscroll'. +Solution: Don't compute skip_lines when width1 is zero (zeertzjq). + +Patch 9.1.0407 +Problem: No scrolling happens with half-page scrolling with line + filling entire window when 'smoothscroll' is disabled. + (Mathias Rav, after v9.1.0285) +Solution: Adjust amount to move cursor by so that it is moved the same + number of lines as was scrolled, even when scrolling different + number of lines than requested with 'nosmoothscroll'. + +Patch 9.1.0408 +Problem: configure fails on Fedora when including perl (chesheer-smile) +Solution: Filter out -spec= from $LIBS and $LDFLAGS to avoid + linking relocation errors for unrelated autoconf tests. + +Patch 9.1.0409 +Problem: too many strlen() calls in the regexp engine +Solution: refactor code to retrieve strlen differently, make use + of bsearch() for getting the character class (John Marriott). + +Patch 9.1.0410 +Problem: warning about uninitialized variable (Tony Mechelynck, after + v9.1.0409) +Solution: initialize variable (John Marriott) + +Patch 9.1.0411 +Problem: too long functions in eval.c +Solution: refactor functions (Yegappan Lakshmanan) + +Patch 9.1.0412 +Problem: typo in regexp_bt.c in DEBUG code, causing compile error (@kfleong7, + after v9.1.0409) +Solution: Replace bulen by buflen + +Patch 9.1.0413 +Problem: smoothscroll may cause infinite loop, with very narrow windows + (Jaehwang Jung, after v9.1.0280) +Solution: Check for width1 being negative, verify that win_linetabsize does + not overflow + +Patch 9.1.0414 +Problem: Unable to leave long line with 'smoothscroll' and 'scrolloff'. + Corrupted screen near the end of a long line with 'scrolloff'. + (Ernie Rael, after 9.1.0280) +Solution: Only correct cursor in case scroll_cursor_bot() was not itself + called to make the cursor visible. Avoid adjusting for + 'scrolloff' beyond the text line height (Luuk van Baal) + +Patch 9.1.0415 +Problem: Some functions are not tested +Solution: Add a few more tests, fix a few minor problems (Yegappan Lakshmanan) + +Patch 9.1.0416 +Problem: some screen dump tests can be improved (after 9.1.0414) +Solution: Make sure screen state changes properly and is captured in the + screen dumps (Luuk van Baal) + +Patch 9.1.0417 +Problem: if_py: find_module has been removed in Python 3.12.0a7 (@Ghost-LZW) +Solution: Do not include find_module for Python >= 3.12.0a7 + +Patch 9.1.0418 +Problem: Cannot move to previous/next rare word (Colin Kennedy) +Solution: Add the ]r and [r motions (Christ van Willegen) + +Patch 9.1.0419 +Problem: eval.c not sufficiently tested +Solution: Add a few more additional tests for eval.c (Yegappan Lakshmanan). + +Patch 9.1.0420 +Problem: :browse oldfiles prompts even with single entry +Solution: Do not prompt, but edit the file directly, also when using :filter + /pat/ browse oldfiles + +Patch 9.1.0421 +Problem: filetype: hyprlang files are not recognized +Solution: Recognize 'hypr{land,paper,idle,lock}.conf' files + as 'hyprlang' filetype, add hyprlang ftplugin (Riley Bruins) + +Patch 9.1.0422 +Problem: function echo_string_core() is too long +Solution: Refactor into several smaller functions (Yegappan Lakshmanan). + +Patch 9.1.0423 +Problem: getregionpos() wrong with blockwise mode and multibyte. +Solution: Use textcol and textlen instead of start_vcol and end_vcol. + Handle coladd properly (zeertzjq). + +Patch 9.1.0424 +Problem: filetype: slint files are not recognized +Solution: Detect '*.slint' files as slint filetype, include basic sling + filetype plugin (Riley Bruins) + +Patch 9.1.0425 +Problem: filetype: purescript files are not recognized +Solution: Recognize '*.purs' files as purescript filetype, include basic + purescript filetype plugin (Riley Bruins) + +Patch 9.1.0426 +Problem: too many strlen() calls in search.c +Solution: Refactor code and remove more strlen() calls, + use explicit variable to remember strlen (John Marriott) + +Patch 9.1.0427 +Problem: tests: some issues with termdebug mapping test +Solution: Use assert_{true,false} if suitable, change + order of expected and actual arguments in assert() calls. + (Ken Takata) + +Patch 9.1.0428 +Problem: Tag guessing leaves wrong search history with very short names + (after 9.1.0426). +Solution: Use the correct variable for pattern length (zeertzjq). + +Patch 9.1.0429 +Problem: Coverity complains about eval.c refactor (after v9.1.0422) +Solution: Check that buf is not used un-initialized, add explicit conditions + for save and restore of copyID + +Patch 9.1.0430 +Problem: getregionpos() doesn't handle one char selection. +Solution: Handle startspaces differently when is_oneChar is set. + Also add a test for an exclusive charwise selection with + multibyte chars (zeertzjq) + +Patch 9.1.0431 +Problem: eval.c is too long +Solution: Move garbage collection code to new gc.c file (Yegappan Lakshmanan). + +Patch 9.1.0432 +Problem: Ancient XPM preprocessor hack may cause build errors. +Solution: Simplify XPM includes and get rid of complicated #ifdef magic + (Drew Vogel). + +Patch 9.1.0433 +Problem: Wrong yanking with exclusive selection and virtualedit=all, + and integer overflow when using getregion() on it. +Solution: Set coladd when decreasing column and 'virtualedit' is active. + Add more tests for getregion() with 'virtualedit' (zeertzjq). + +Patch 9.1.0434 +Problem: make errors trying to access autoload/zig +Solution: Remove autoload/zig from Makefile, adjust Filelist (Derek Schrock). + +Patch 9.1.0435 +Problem: filetype: cygport files are not recognized +Solution: Recognize '*.cygport' files as sh filetype (Ken Takata). + +Patch 9.1.0436 +Problem: Crash when using '?' as separator for :s and pattern contains + escaped '?'s (after 9.1.0409). +Solution: Always compute startplen. (zeertzjq). + +Patch 9.1.0437 +Problem: Motif requires non-const char pointer for XPM data shared with + GTK (Tony Mechelynck, after v9.1.0432) +Solution: Cast non-const to const char pointer for GTK (Drew Vogel). + +Patch 9.1.0438 +Problem: Wrong Ex command executed when :g uses '?' as delimiter and + pattern contains escaped '?'. +Solution: Don't use "*newp" when it's not allocated (zeertzjq). + +Patch 9.1.0439 +Problem: Cannot filter the history +Solution: Implement :filter :history + +Patch 9.1.0440 +Problem: function get_lval() is too long +Solution: factor out the get_lval_subscript() function (Yegappan Lakshmanan). + +Patch 9.1.0441 +Problem: getregionpos() can't properly indicate positions beyond eol. +Solution: Add an "eol" flag that enables handling positions beyond end + of line like getpos() does (zeertzjq). + +Patch 9.1.0442 +Problem: hare runtime files outdated +Solution: runtime(hare): update hare.vim to match upstream (Amelia Clarke). + +Patch 9.1.0443 +Problem: Can't use a blockwise selection with a width for getregion(). +Solution: Add support for blockwise selection with width like the return + value of getregtype() or the "regtype" value of TextYankPost + (zeertzjq). + +Patch 9.1.0444 +Problem: Not enough tests for getregion() with multibyte chars. +Solution: Add a few more tests (zeertzjq). + +Patch 9.1.0445 +Problem: Coverity warning after 9.1.0440 +Solution: Fix Coverity warning, add a test and reduce the calls to clear_tv() + (Yegappan Lakshmanan). + +Patch 9.1.0446 +Problem: getregionpos() behaves inconsistently for a partly-selected + multibyte char. +Solution: Always use column of the first byte for a partly-selected + multibyte char (zeertzjq). + +Patch 9.1.0447 +Problem: completion may be wrong when deleting all chars +Solution: Reset compl_shown_match + +Patch 9.1.0448 +Problem: compiler warning in eval.c (after v9.1.0429) +Solution: Refactor code (Yegappan Lakshmanan) + +Patch 9.1.0449 +Problem: MS-Windows: Compiler warnings +Solution: Resolve size_t to int warnings + +Patch 9.1.0450 +Problem: eval.c code too complex +Solution: Refactor eval6() and eval9() functions into several smaller + functions (Yegappan Lakshmanan) + +Patch 9.1.0451 +Problem: No test for escaping '<' with shellescape() +Solution: Add a test. Use memcpy() in code to make it easier to + understand. Fix a typo (zeertzjq). + +Patch 9.1.0452 +Problem: Configure checks for libelf unnecessarily +Solution: Remove configure check (youcai) + +Patch 9.1.0453 +Problem: filetype: rasi files are not recognized +Solution: Regonize '*.rasi' files as rasi filetype, include a filetype and + syntax plugin (Pierrick Guillaume) + +Patch 9.1.0454 +Problem: minor issues in test_filetype with rasi test (after 9.1.0453) +Solution: Re-sort test_filetype, fix wrong syntax.txt help tags + +Patch 9.1.0455 +Problem: MS-Windows: compiler warning for size_t to int conversion +Solution: Add a few type casts to resolve warning on Windows (Mike Williams). + +Patch 9.1.0456 +Problem: Left shift is incorrect with vartabstop and shiftwidth=0 +Solution: Make tabstop_at() function aware of shift direction + (Gary Johnson) + +Patch 9.1.0457 +Problem: tests: test_gui fails on Wayland (after: 9.1.0064, Gary Johnson) +Solution: Drop the "empty($WAYLAND_DISPLAY)" condition in the test + +Patch 9.1.0458 +Problem: Coverity complains about division by zero +Solution: Check explicitly for sw_val being zero + Shouldn't happen, since tabstop value should always be larger than + zero. So just add this as a safety measure. + +Patch 9.1.0459 +Problem: Vim9: import autoload does not work with symlink (Olivier Dormond) +Solution: Set sn_autoload_prefix in check_script_symlink (nwounkn) + +Patch 9.1.0460 +Problem: filetype: lintstagedrc files are not recognized +Solution: Recognize '.lintstagedrc' files as json filetype (İlyas Akın). + +Patch 9.1.0461 +Problem: too many strlen() calls in drawline.c +Solution: Refactor code to avoid strlen() (John Marriott). + +Patch 9.1.0462 +Problem: eval5() and eval7 are too complex +Solution: Refactor eval5() and eval7() in eval.c (Yegappan Lakshmanan). + +Patch 9.1.0463 +Problem: no fuzzy-matching support for insert-completion +Solution: Enable insert-mode completion with fuzzy-matching + using :set completopt+=fuzzy (glepnir). + +Patch 9.1.0464 +Problem: No whitespace padding in commentstring option in ftplugins +Solution: Change default to include whitespace padding, update + existing filetype plugins with the new default value (Riley Bruins) + +Patch 9.1.0465 +Problem: missing filecopy() function +Solution: Implement filecopy() Vim script function (Shougo Matsushita). + +Patch 9.1.0466 +Problem: Missing comments for fuzzy completion (after 9.1.0463) +Solution: Add more comments, adjust indentation slightly (glepnir). + +Patch 9.1.0467 +Problem: typos in some comments (after v9.1.0466) +Solution: Fix comments (zeertzjq). + +Patch 9.1.0468 +Problem: GvimExt does not consult HKEY_CURRENT_USER +Solution: Make GvimExt first consult HKEY_CURRENT_USER and then fall + back to HKEY_LOCAL_MACHINE to find gvim (David Wagner) + +Patch 9.1.0469 +Problem: Cannot have buffer-local value for 'completeopt' (Nick Jensen). +Solution: Make 'completeopt' global-local (zeertzjq). + +Patch 9.1.0470 +Problem: tests: Test_ColonEight_MultiByte() fails on MS-Windows +Solution: Mark test as flaky + +Patch 9.1.0471 +Problem: Crash when using autocmd_get() after removing event inside + autocmd (Sergey Vlasov) +Solution: Check that the pattern is NULL (zeertzjq). + +Patch 9.1.0472 +Problem: Inconsistencies between functions for option flags. +Solution: Consistently use "unsigned int" as return type and rename + get_bkc_value() to get_bkc_flags() (zeertzjq). + +Patch 9.1.0473 +Problem: term_start() does not clear vertical modifier +Solution: Clear the flag after splitting the window (Yegappan Lakshmanan). + +Patch 9.1.0474 +Problem: CI: Test_ColonEight() fails on github runners (Ken Takata) +Solution: Run the test for files on the C: drive, where dos shortnames + are still enabled, refactor the tests to use a single setup + function for the preparation. + +Patch 9.1.0475 +Problem: cmod_split modifier is always reset in term_start() +Solution: Only clear the WSP_VERT flag, if it is not already in + cmdmod.cmod_split (Yegappan Lakshmanan). + +Patch 9.1.0476 +Problem: Cannot see matched text in popup menu +Solution: Introduce 2 new highlighting groups: PmenuMatch and + PmenuMatchSel (glepnir). + +Patch 9.1.0477 +Problem: block_editing errors out when using + (Ali Rizvi-Santiago, after v9.1.0274) +Solution: Change ins_len from size_t to int so that the test + if ins_len is negative actually works properly. + +Patch 9.1.0478 +Problem: Potential deref of NULL pointer in fuzzy_match_str_with_pos() + on cleanup (after v9.1.0476) +Solution: Only free the pointer if it is non-NULL (glepnir). + +Patch 9.1.0479 +Problem: fuzzy_match_str_with_pos() does unnecessary list operations. +Solution: Use fuzzy_match() directly (zeertzjq). + +Patch 9.1.0480 +Problem: fuzzy string matching executed when not needed +Solution: When no leader is available, can skip fuzzy logic, so return + early (glepnir). + +Patch 9.1.0481 +Problem: Vim9: term_getjob() throws an exception on error +Solution: Return null_job instead, when there is no job (Ernie Rael). + +Patch 9.1.0482 +Problem: termdebug plugin needs more love +Solution: start with some more Vim9 refactoring to improve maintenance and + readability (Ubaldo Tiberi). + +Patch 9.1.0483 +Problem: glob() not sufficiently tested +Solution: Add more tests for directory containing [] chars. + +Patch 9.1.0484 +Problem: Sorting of completeopt+=fuzzy is not stable. +Solution: Compare original indexes when scores are the same (zeertzjq). + +Patch 9.1.0485 +Problem: Matched text shouldn't be highlighted in "kind" and "menu". +Solution: Pass hlf_T instead of the attribute. Fix indent (zeertzjq). + +Patch 9.1.0486 +Problem: filetype: Snakemake files are not recognized +Solution: Detect '*.smk' and Snakefile files as snakemake filetype + (Riley Bruins) + +Patch 9.1.0487 +Problem: completed item not update on fuzzy completion +Solution: Reset compl_shown_match when at original match position (glepnir). + +Patch 9.1.0488 +Problem: Wrong padding for pum "kind" with 'rightleft'. +Solution: Fix off-by-one error (zeertzjq). + +Patch 9.1.0489 +Problem: default completion may break with fuzzy +Solution: Check that completion_match_array is not null (glepnir). + +Patch 9.1.0490 +Problem: minor style problems with Patch 9.1.0487 +Solution: use shown_compl instead of after_first_compl variable (glepnir). + +Patch 9.1.0491 +Problem: Cmdline pum doesn't work properly with 'rightleft'. +Solution: Don't use curwin->w_p_rl in cmdline mode in pum_redraw(). Use + a static variable since pum_may_redraw() may be called in any + mode. Also correct position of other popups with 'rightleft' + (zeertzjq). + +Patch 9.1.0492 +Problem: Vim-script files may not be recognised +Solution: Add shebang line detection (Doug Kearns) + +Patch 9.1.0493 +Problem: Test for Patch 9.1.0489 doesn't fail without the fix. +Solution: Use "!" flag of feedkeys() so that ex_normal_busy is not set + and ins_compl_check_keys() is not skipped (zeertzjq). + +Patch 9.1.0494 +Problem: Wrong matched text highlighted in pum with 'rightleft'. +Solution: Match using the original text instead of the reversed text + (zeertzjq). + +Patch 9.1.0495 +Problem: Matched text isn't highlighted in cmdline pum. +Solution: Use cmdline completion pattern in cmdline mode (zeertzjq). + +Patch 9.1.0496 +Problem: matched text is highlighted case-sensitively +Solution: Use MB_STRNICMP, update highlighting when the base changes (glepnir) + +Patch 9.1.0497 +Problem: termdebug can be further improved +Solution: Refactor save/restore, update docs, add a new save/restore test + (Ubaldo Tiberi). + +Patch 9.1.0498 +Problem: getcmdcompltype() interferes with cmdline completion. +Solution: Don't set expand context when it's already set (zeertzjq). + +Patch 9.1.0499 +Problem: MS-Windows: doesn't handle symlinks properly (Timothy Madden) +Solution: Implement lstat() on MS-Windows (LemonBoy). + +Patch 9.1.0500 +Problem: cannot switch buffer in a popup (Yggdroot) +Solution: Add popup_setbuf() function. + +Patch 9.1.0501 +Problem: too complicated mapping restore in termdebug +Solution: Simplify unmapping logic, add a few more tests (Ubaldo Tiberi). + +Patch 9.1.0502 +Problem: MS-Windows: too much legacy code +Solution: Clean up old code (Ken Takata). + +Patch 9.1.0503 +Problem: cannot use fuzzy keyword completion (Maxim Kim) +Solution: Add the "fuzzycollect" value for the 'completeopt' + setting, to gather matches using fuzzy logic (glepnir). + +Patch 9.1.0504 +Problem: inner-tag textobject confused about ">" in attributes +Solution: Skip over quoted '>' when determining the start position + +Patch 9.1.0505 +Problem: filetype: Faust files are not recognized +Solution: Detect '*.lib' files as Faust filetype, add detection for + '*.dsp' files (Faust or Make), remove '*.lib' from Cobol + filetype (PowerUser64) + +Patch 9.1.0506 +Problem: filetype: .envrc & .prettierignore not recognized +Solution: Detect '.envrc' as shell and '.prettierignore' as gitignore + filetype (Tyler Miller) + +Patch 9.1.0507 +Problem: hard to detect cursor movement in the command line +Solution: Add the CursorMovedC autocommand (Shougo Matsushita). + +Patch 9.1.0508 +Problem: termdebug plugin can be further improved +Solution: Add sanity-check, timeout config, change vars to bool + update docs, add more tests (Ubaldo Tiberi). + +Patch 9.1.0509 +Problem: not possible to translate Vim script messages (RestorerZ) +Solution: Implement bindtextdomain() and gettext() to support Vim script + message translations (Christ van Willegen). + +Patch 9.1.0510 +Problem: CI: test_gettext fails on MacOS14 + MSVC Win (after v9.1.0509) +Solution: Skip the test for now. + +Patch 9.1.0511 +Problem: CursorMovedC triggered wrongly with setcmdpos() (after v9.1.0507) +Solution: Remove the premature triggering. Also don't trigger when + cursor didn't move (zeertzjq). + +Patch 9.1.0512 +Problem: Mode message for spell completion doesn't match allowed keys + (Kyle Kovacs) +Solution: Show "^S" instead of "s" (zeertzjq). + +Patch 9.1.0513 +Problem: Vim9: segfault with object comparisons +Solution: Increment recusive_cnt before calling typval_compare_object() + (Ernie Rael) + +Patch 9.1.0514 +Problem: Vim9: issue with comparing objects recursively (Yinzuo Jiang) +Solution: only set recursive == TRUE, when called from tv_equal(), not + from typeval_compare_object(), refactor code into object_equal() + function (LemonBoy). + +Patch 9.1.0515 +Problem: Vim9: segfault in object_equal() +Solution: Test for object pointer being NULL, before dereferencing them + (Ernie Rael). + +Patch 9.1.0516 +Problem: need more tests for nested dicts and list comparision +Solution: Add tests for comparing deeply nested List/Dict values + (Yegappan Lakshmanan). + +Patch 9.1.0517 +Problem: MS-Windows: too long lines in Make_mvc.mak +Solution: Wrap long lines in Make_mvc.mak (Ken Takata). + +Patch 9.1.0518 +Problem: initialize the random buffer can be improved +Solution: Refactor init_srand() function, move machine-specific parts to + os_mswin and os_unix, implement a fallback for Windows 10 and + later (LemonBoy). + +Patch 9.1.0519 +Problem: MS-Windows: libvterm compilation can be optimized +Solution: Enable batch inference for libvterm (Ken Takata). + +Patch 9.1.0520 +Problem: Vim9: incorrect type checking for modifying lists +Solution: Correctly assign the member declared types and generate + typechecks, add disassembly test (LemonBoy). + +Patch 9.1.0521 +Problem: if_py: _PyObject_CallFunction_SizeT is dropped in Python 3.13 +Solution: define PyObject_CallFunction for Python >= 3.13 (Yaakov Selkowitz). + +Patch 9.1.0522 +Problem: Vim9: string(object) hangs for recursive references +Solution: Handle recursive objects specifically, add a hang test and a + compare test (Ernie Rael) + +Patch 9.1.0523 +Problem: Vim9: cannot downcast an object (Ernie Rael) +Solution: Fix class downcasting issue (LemonBoy). + +Patch 9.1.0524 +Problem: the recursive parameter in the *_equal functions can be removed +Solution: Remove the recursive parameter in dict_equal(), list_equal() + object_equal and tv_equal(). Use a comparison of the static + var recursive_cnt == 0 to determine whether or not tv_equal() + has been called recursively (Yinzuo Jiang). + +Patch 9.1.0525 +Problem: Right release selects immediately when pum is truncated. +Solution: Use pum_height instead of pum_size when checking click row. + Don't place it above mouse row when there is more space below. + (zeertzjq) + +Patch 9.1.0526 +Problem: Cursor is moved to bottom of window trying to pagescroll when + already at the start of the buffer (Asheq Imran, after v9.1.0357) +Solution: Don't move cursor when buffer content did not move (Luuk van Baal). + +Patch 9.1.0527 +Problem: inconsistent parameter in Makefiles for Vim executable +Solution: consistently use $VIMPROG across all Makefiles (RestorerZ). + +Patch 9.1.0528 +Problem: spell completion message still wrong in translations + (after 9.1.0512) +Solution: Update translation files with the new message (Kyle Kovacs). + +Patch 9.1.0529 +Problem: silent! causes following try/catch to not work (Malcolm Rowe) +Solution: consider emsg_silent in handle_did_throw() and do not abort + evaluation flow for :silent! (LemonBoy). + +Patch 9.1.0530 +Problem: xxd: MSVC warning about non-ASCII character +Solution: Specify source-charset:utf-8 in Makefile (Ken Takata). + +Patch 9.1.0531 +Problem: resource leak in mch_get_random() (after v9.1.0518) +Solution: close file descriptor after reading successfully from /dev/urandom + +Patch 9.1.0532 +Problem: filetype: Cedar files not recognized +Solution: Detect '*.cedar' files as cedar filetype (Riley Bruins). + +Patch 9.1.0533 +Problem: Vim9: need more tests for nested objects equality +Solution: Add more tests (Ernie Rael). + +Patch 9.1.0534 +Problem: completion wrong with fuzzy when cycling back to original + (Quan Nguyen) +Solution: Reset show_match_ok when cp_score is zero (glepnir). + +Patch 9.1.0535 +Problem: newline escape wrong in ex mode (Konrad Schwarz) +Solution: Partly revert Patch 7.3.014, remove backslash in front of a + newline when not in prompt mode in ex line mode (Mohamed Akram). + +Patch 9.1.0536 +Problem: filetype: zone files are not recognized (rpdprd) +Solution: Detect '*.zone' files as bindzone filetype. + +Patch 9.1.0537 +Problem: signed number detection for CTRL-X/A can be improved (Chris Patuzzo) +Solution: Add the new "blank" value for the 'nrformat' setting. This will make + Vim assume a signed number only if there is a blank in front of the + sign (distobs). + +Patch 9.1.0538 +Problem: not possible to assign priority when defining a sign + (Mathias Fußenegger) +Solution: Add the priority argument for the :sign-define ex command and + the sign_define() function (LemonBoy). + +Patch 9.1.0539 +Problem: Not enough tests for what v9.1.0535 fixed +Solution: Add another test for ex-mode. + +Patch 9.1.0540 +Problem: Unused assignment in sign_define_cmd() +Solution: Remove the assignment. Also document the "priority" flag of + sign_define() (zeertzjq). + +Patch 9.1.0541 +Problem: failing test with Vim configured without channel +Solution: In the test Test_null_values() verify that the 'channel' and + 'job' feature is present in Vim. (Dominique Pellé). + +Patch 9.1.0542 +Problem: Vim9: confusing string() output for object functions +Solution: improve the output for object functions (Ernie Rael). + +Patch 9.1.0543 +Problem: Behavior of CursorMovedC is strange. +Solution: Also trigger when the cmdline has changed (zeertzjq). + +Patch 9.1.0544 +Problem: filetype: ldapconf files are not recognized +Solution: Detect '.ldaprc', 'ldap.conf' and 'ldaprc' files as ldapconf + filetype, include a simple ldapconf ftplugin file (Riley Bruins). + +Patch 9.1.0545 +Problem: MSVC conversion warning (LemonBoy, after 9.1.0522) +Solution: Use size_t instead of int, fix style of casts (Ernie Rael). + +Patch 9.1.0546 +Problem: vim-tiny fails on CTRL-X/CTRL-A (Rob Foehl, after 9.1.0172) +Solution: Move #ifdefs, so that after changing the line in del_bytes, + the cached textlen value is invalidated. + +Patch 9.1.0547 +Problem: No way to get the arity of a Vim function (Austin Ziegler) +Solution: Enhance get() Vim script function to return the function + argument info using get(func, "arity") (LemonBoy). + +Patch 9.1.0548 +Problem: it's not possible to get a unique id for some vars +Solution: Add the id() Vim script function, which returns a unique + identifier for object, dict, list, job, blob or channel + variables (Ernie Rael). + +Patch 9.1.0549 +Problem: fuzzycollect regex based completion not working as expected +Solution: Revert Patch v9.1.0503 (glepnir). + +Patch 9.1.0550 +Problem: filetype: antlr4 files are not recognized +Solution: Detect '*.g4' as antlr4 filetype, include a simple antlr4 + syntax and filetype plugin (Yinzuo Jiang). + +Patch 9.1.0551 +Problem: filetype: htmlangular files are not properly detected +Solution: Use the new htmlangular filetype for angular files, because + since angular v17, those are no longer valid HTML files + (Dennis van den Berg). + +Patch 9.1.0552 +Problem: No test for antlr4 filetype (after 9.1.0550) +Solution: Add a simple filename test. + +Patch 9.1.0553 +Problem: filetype: *.mcmeta files are not recognized +Solution: Detect '*.mcmeta' files as json filetype (Tomodachi94). + +Patch 9.1.0554 +Problem: :bw leaves jumplist and tagstack data around (Paul "Joey" Clark) +Solution: Wipe jumplist and tagstack references to the wiped buffer + (LemonBoy). + +Patch 9.1.0555 +Problem: filetype: angular ft detection is still problematic (after 9.1.0551) +Solution: Detect htmlangular filetype only by inspecting the content, + do not try to determine it from a generic name like + '*.component.html'. + +Patch 9.1.0556 +Problem: :bwipe doesn't remove file from jumplist and tagstack of other + tabpages. Time complexity of mark_forget_file() is O(n^2) when + removing all entries (after v9.1.0554) +Solution: Use FOR_ALL_TAB_WINDOWS(). Start the loops over the arrays + from the end instead of the start (zeertzjq). + +Patch 9.1.0557 +Problem: moving in the buffer list doesn't work as documented + (SenileFelineS) +Solution: Skip non-help buffers, when run from normal buffers, else + only move from help buffers to the next help buffer (LemonBoy). + +Patch 9.1.0558 +Problem: filetype: prolog detection can be improved +Solution: Improved the Prolog file detection regex and added tests for + all cases (igna_martinoli). + +Patch 9.1.0559 +Problem: translation of vim scripts can be improved (after v9.1.0509) +Solution: improve documentation, add tests, include missing + libraries for the Windows CI (RestorerZ). + +Patch 9.1.0560 +Problem: bindtextdomain() does not indicate an error (after v9.1.509) +Solution: return false on failure (OOM) (Chris van Willegen). + +Patch 9.1.0561 +Problem: netbeans: variable used un-initialized (Coverity) (after v9.1.0557) +Solution: Properly initialize exarg_T struct for use with netbeans + The actual exarg.cmdidx doesn't really matter, but let's use + something, that is not affected by the recent changes (going through + the buffer list) and use CMD_USER. + +Patch 9.1.0562 +Problem: tests: inconsistency in test_findfile.vim, it saves and restores + 'shellslash', but doesn't actually set it +Solution: Set shellslash explicitly (zeertzjq). + +Patch 9.1.0563 +Problem: Cannot process any Key event. +Solution: Add the KeyInputPre autocmd (Shougo Matsushita). + +Patch 9.1.0564 +Problem: id() can be made faster +Solution: don't use printf(), use clever shift of pointer (Ernie Rael). + +Patch 9.1.0565 +Problem: Stop directory doesn't work properly in 'tags' (Jesse Pavel). +Solution: Also move the stop directory forward by one byte (zeertzjq). + +Patch 9.1.0566 +Problem: Stop directory in findfile() doesn't work properly without a + trailing slash. +Solution: Always use fnamencmp(), not fnamecmp(). + +Patch 9.1.0567 +Problem: Cannot use relative paths as findfile() stop directories. +Solution: Change a relative path to an absolute path (zeertzjq). + +Patch 9.1.0568 +Problem: Cannot expand paths from 'cdpath' setting (Daniel Hahler) +Solution: Implement 'cdpath' completion, add the new 'dir_in_path' + completion type (LemonBoy). + +Patch 9.1.0569 +Problem: fnamemodify() treats ".." and "../" differently. +Solution: Expand ".." properly like how "/.." is treated in 8.2.3388 + (zeertzjq). + +Patch 9.1.0570 +Problem: tests: test_gettext_make can be improved (after v9.1.0559) +Solution: Improve the test (Ken Takata). + +Patch 9.1.0571 +Problem: tests: Test_gui_lowlevel_keyevent is flaky +Solution: Mark as flaky (Ken Takata). + +Patch 9.1.0572 +Problem: cannot specify tab page closing behaviour (Gianluca Pacchiella). +Solution: Add the 'tabclose' option (LemonBoy). + +Patch 9.1.0573 +Problem: ex: no implicit print for single addresses +Solution: Explicitly print even during single addresses, as requested by POSIX + (Mohamed Akram) + +Patch 9.1.0574 +Problem: ex: wrong handling of commands after bar +Solution: for :append, :insert and :change use the text after the bar as input + for those commands. This is what POSIX requests (Mohamed Akram). + +Patch 9.1.0575 +Problem: Wrong comments in alt_tabpage() (after v9.1.0572) +Solution: Correct the comments (zeertzjq). + +Patch 9.1.0576 +Problem: tests: still an issue with test_gettext_make (after v9.1.0570) +Solution: Compare the getenv() output against v:null to verify + that $GETTEXT_PATH was set or not (Ken Takata). + +Patch 9.1.0577 +Problem: Unnecessary checks for v:sizeoflong in test_put.vim. They are + no longer necessary as Patch 8.2.3661 has changed the count to + be within 32-bit integer limit. +Solution: Remove the checks (zeertzjq). + +Patch 9.1.0578 +Problem: no tests for :Tohtml +Solution: Add two basic tests (Yinzuo Jiang). + +Patch 9.1.0579 +Problem: Ex command is still executed after giving E1247. +Solution: Indicate the error properly and set cmd to NULL (zeertzjq). + +Patch 9.1.0580 +Problem: An :lmap mapping for a printable keypad key is not applied + when typing it in Select mode. +Solution: Change keypad key to ASCII after setting vgetc_char (zeertzjq). + +Patch 9.1.0581 +Problem: style: Various lines are indented inconsistently +Solution: Retab these lines and correct some comments (zeertzjq). + +Patch 9.1.0582 +Problem: Printed line no longer overwrites colon when pressing Enter in + Ex mode (after 9.1.0573). +Solution: Restore the behavior of pressing Enter in Ex mode (zeertzjq). + +Patch 9.1.0583 +Problem: filetype: *.pdf_tex files are not recognized +Solution: Detect '*.pdf_tex' files as tex filetype (Jonas Dujava). + +Patch 9.1.0584 +Problem: Warning about redeclaring f_id() non-static +Solution: Declare f_id() static (John Marriott). + +Patch 9.1.0585 +Problem: tests: test_cpoptions leaves swapfiles around +Solution: Use :bw! instead of :close! + +Patch 9.1.0586 +Problem: ocaml runtime files are outdated +Solution: Sync those files with the upstream repo, detect a few more ocaml + files (Yinzuo Jiang). + +Patch 9.1.0587 +Problem: tests: Test_gui_lowlevel_keyevent is still flaky (after v9.1.0571) +Solution: Skip generating key event for Ctrl-C, remove the test_is_flaky + variable again (Ken Takata). + +Patch 9.1.0588 +Problem: The maze program no longer compiles on newer clang +Solution: Use ANSI C function definition for main() (Mohamed Akram). + +Patch 9.1.0589 +Problem: vi: d{motion} and cw command work differently than expected +Solution: add new cpo-z flag to make the behaviour configurable + +Patch 9.1.0590 +Problem: Vim9: crash when accessing getregionpos() return value. +Solution: Correct the return type (zeertzjq). + +Patch 9.1.0591 +Problem: filetype: *.wl files are not recognized +Solution: Detect '*.wl' files as Mathematica package files (Jonas Dujava). + +Patch 9.1.0592 +Problem: filetype: Mediawiki files are not recognized +Solution: detect "*.mw" and "*.wiki" as mediawiki filetype, + include basic syntax and filetype plugins (AvidSeeker). + +Patch 9.1.0593 +Problem: filetype: Asymptote files are not recognized +Solution: detect '*.asy' files as asy filetype, include ftplugin and syntax + plugin (AvidSeeker). + +Patch 9.1.0594 +Problem: Unnecessary redraw when setting 'winfixbuf'. +Solution: Remove P_RWIN flag (zeertzjq). + +Patch 9.1.0595 +Problem: make errors out with the po Makefile + (yanivshlom, after v9.1.0558) +Solution: Set variables differently (RestorerZ). + +Patch 9.1.0596 +Problem: filetype: Debian devscripts config files are not recognized +Solution: detect devscripts.conf and .devscripts files as sh filetype + (sourced by /bin/sh). + +Patch 9.1.0597 +Problem: KeyInputPre cannot get the (unmapped typed) key (after v9.1.0563) +Solution: Add the "typedchar" property to the v:event dict + (Shougo Matsushita). + +Patch 9.1.0598 +Problem: fuzzy completion does not work with default completion +Solution: Make it work (glepnir). + +Patch 9.1.0599 +Problem: Termdebug: still get E1023 when specifying arguments and using + a prompt buffer. +Solution: Use empty() instead of len(). Add a test. Fix wrong order of + arguments to assert_equal() in Test_termdebug_basic() (zeertzjq). + +Patch 9.1.0600 +Problem: unused function typval_compare_class() and error constants +Solution: Remove function typval_compare_class() and ifdef out + unused error constants (Dominique Pellé). + +Patch 9.1.0601 +Problem: Wrong cursor position with 'breakindent' when a double-width + character doesn't fit in a screen line (mikoto2000) +Solution: Include the width of the 'breakindent' properly (zeertzjq). + +Patch 9.1.0602 +Problem: filetype: Prolog detection can be improved +Solution: Update the prolog detection regex (igna_martinoli). + +Patch 9.1.0603 +Problem: Pattern detection for Dracula language uses "*lvs" and "*lpe". + as there is no dot, those are not treated as extensions which + they should (judging by 'runtime/syntax/dracula.vim' and + common sense). +Solution: Use "*.lvs" and "*.lpe" patterns (Evgeni Chasnovski). + +Patch 9.1.0604 +Problem: popup_filter during Press Enter prompt seems to hang +Solution: Return early, when need_wait_return is set (Ernie Rael). + +Patch 9.1.0605 +Problem: internal error with fuzzy completion (techntools) +Solution: Only fuzzy complete the pattern after directory separator + (glepnir) + +Patch 9.1.0606 +Problem: tests: generated files may cause failure in test_codestyle +Solution: Exclude OLE-related generated files from style checks (Ken Takata). + +Patch 9.1.0607 +Problem: termdebug: uses inconsistent style +Solution: termdebug: deprecate numeric values for v:true/false, fix white + space style in the plugin (Ubaldo Tiberi). + +Patch 9.1.0608 +Problem: Coverity warns about a few potential issues +Solution: Fix those issues (see details below) + +Patch 9.1.0609 +Problem: outdated comments in Makefile +Solution: Update outdated comments, update rule for vimtags (Shane Harper). + +Patch 9.1.0610 +Problem: filetype: OpenGL Shading Language files are not detected +Solution: Detect various file extensions as GLSL filetype, include + indent and syntax script, do no longer recognize '*.comp' + as Mason filetype (Gregory Anders). + +Patch 9.1.0611 +Problem: Ambiguous mappings not correctly resolved with modifyOtherKeys +Solution: Check for termcode when an upper case mapping is received and + does not match (Oleg Goncharov). + +Patch 9.1.0612 +Problem: filetype: deno.lock file not recognized +Solution: detect 'deno.lock' as json filetype (カワリミ人形). + +Patch 9.1.0613 +Problem: tests: termdebug test may fail and leave temp file around + (Dominique Pellé) +Solution: Only run balloon_show() if the function exists, validate + termdebug is running using the g: termdebug_is_running var, + use defer to delete temporary files. + +Patch 9.1.0614 +Problem: Vim syntax file changes to :set command highlighting render + some test dump files invalid (zeertzjq) +Solution: Regenerate the affected dump files (Doug Kearns). + +Patch 9.1.0615 +Problem: Unnecessary STRLEN() in make_percent_swname() +Solution: Pass the end of "dir" to make_percent_swname() (zeertzjq). + +Patch 9.1.0616 +Problem: filetype: Make syntax highlighting off for MS Makefiles +Solution: Try to detect MS Makefiles and adjust syntax rules to it. + (Ken Takata) + +Patch 9.1.0617 +Problem: Cursor moves beyond start of a folded range at the end of a buffer. +Solution: Move cursor to start of fold when going beyond end of buffer. + Check that cursor moved to detect FAIL in outer cursor function. + (Luuk van Baal) + +Patch 9.1.0618 +Problem: cannot mark deprecated attributes in completion menu +Solution: Add hl_group to the Dictionary of supported completion fields + (glepnir). + +Patch 9.1.0619 +Problem: tests: test_popup fails (after v9.1.0618) +Solution: Correct test, move combining extra attributes to + pum_compute_text_attrs() (glepnir). + +Patch 9.1.0620 +Problem: Vim9: segfauls with null objects (after v9.1.0219) +Solution: Check object pointer being NULL (Ernie Rael). + +Patch 9.1.0621 +Problem: MS-Windows: startup code can be improved +Solution: Re-work and optimize win32 startup code (Ken Takata). + +Patch 9.1.0622 +Problem: MS-Windows: mingw-build can be optimized +Solution: Use --gc-sections to reduce the size of the executable + (Ken Takata) + +Patch 9.1.0623 +Problem: Mingw: warnings when trying to delete non-existing files +Solution: Use "rm -f" instead of "rm" to suppress errors for + non-existing files (Ken Takata) + +Patch 9.1.0624 +Problem: ex command modifiers are not found (Ingo Karkat, after v9.1.0352) +Solution: Partly revert Patch v9.1.0352, ignore :{ and :} + +Patch 9.1.0625 +Problem: tests: test output all translated messages for all + translations +Solution: Redirect the output of check.vim to /dev/null, it's not that + useful. + +Patch 9.1.0626 +Problem: Vim9: need more tests with null objects (after v9.1.0620) +Solution: add one more test with null_object (Ernie Rael). + +Patch 9.1.0627 +Problem: MinGW: build-error when COVERAGE is enabled + (after v9.1.0621) +Solution: Fix regressions in v9.1.0621 and v9.1.0622 (Ken Takata). + +Patch 9.1.0628 +Problem: MinGW: coverage files are not cleaned up +Solution: Adjust clean rule to remove the coverage files (Ken Takata). + +Patch 9.1.0629 +Problem: Rename of pum hl_group is incomplete in source. +Solution: Also rename the test function. Rename to user_hlattr in code + to avoid confusion with pum_extra. Add test with matched text + highlighting (zeertzjq). + +Patch 9.1.0630 +Problem: MS-Windows: build fails with VIMDLL and mzscheme +Solution: Define scheme_register_tls_space() inside gvim.exe + and refer to it from the dll (Ken Takata). + +Patch 9.1.0631 +Problem: wrong completion list displayed with non-existing dir + fuzzy + completion (kawarimidoll) +Solution: clear list of matches, if leader did not use fuzzy match (glepnir). + +Patch 9.1.0632 +Problem: MS-Windows: Compiler Warnings +Solution: Fix the warnings (Ken Takata). + +Patch 9.1.0633 +Problem: Compilation warnings with `-Wunused-parameter` +Solution: Add the `UNUSED` macro where needed, and remove some + superfluous ones (Dominique Pellé). + +Patch 9.1.0634 +Problem: Ctrl-P not working by default (Jesse Pavel, after v9.1.0598) +Solution: Revert part of v9.1.0598 and set cur_match_pos + correctly according to compl_dir_forward(). + +Patch 9.1.0635 +Problem: filetype: SuperHTML template files not recognized +Solution: Update the filetype detection code to detect '*.shtml' either + as HTML (Server Side Includes) or SuperHTML (template files) + (EliSauder). + +Patch 9.1.0636 +Problem: filetype: ziggy files are not recognized +Solution: detect '*.ziggy' files as ziggy filetype, + detect '*.ziggy-schema' files as ziggy-schema filetype (EliSauder). + +Patch 9.1.0637 +Problem: MS-Windows: Style issues in MSVC Makefile +Solution: Fix style issues, simplify logic (Ken Takata). + +Patch 9.1.0638 +Problem: E1510 may happen when formatting a message (after 9.1.0181). +Solution: Only give E1510 when using typval (zeertzjq). + +Patch 9.1.0639 +Problem: channel timeout may wrap around +Solution: Correct timeout calculation when GetTickCount() wraps around + (Ken Takata). + +Patch 9.1.0640 +Problem: Mingw: Makefile can be improved +Solution: Reduce nesting level, directly check if the '-Wl,--entry' + option is required (Ken Takata). + +Patch 9.1.0641 +Problem: MS-Windows: OLE enabled in console version, may cause hang + (Linda_pp) +Solution: Disable OLE for console version (Ken Takata). + +Patch 9.1.0642 +Problem: Check that mapping rhs starts with lhs doesn't work if lhs is + not simplified. +Solution: Keep track of the mapblock containing the alternative lhs and + also compare with it (zeertzjq). + +Patch 9.1.0643 +Problem: terminal: cursor may end up on invalid position after reducing + the scrollback lines (user202729) +Solution: After reducing the scrollback size, check the cursor position, + making sure it does not end up on an invalid line. + +Patch 9.1.0644 +Problem: Unnecessary STRLEN() when applying mapping (after v9.1.0642). +Solution: Use m_keylen and vim_strnsave() (zeertzjq). + +Patch 9.1.0645 +Problem: regex: wrong match when searching multi-byte char case-insensitive + (diffsetter) +Solution: Apply proper case-folding for characters and search-string + +Patch 9.1.0646 +Problem: Vim9: imported function may not be found +Solution: Try to find the function by name (Ernie Rael). + +Patch 9.1.0647 +Problem: [security] use-after-free in tagstack_clear_entry (Suyue Guo). +Solution: Instead of manually calling vim_free() on each of the tagstack + entries, let's use tagstack_clear_entry(), which will + also free the stack, but using the VIM_CLEAR macro, which prevents a + use-after-free by setting those pointers to NULL. + +Patch 9.1.0648 +Problem: [security] double-free in dialog_changed() (SuyueGuo) +Solution: Only clear pointer b_sfname pointer, if it is different than the + b_ffname pointer. Don't try to free b_fname, set it to NULL + instead. + +Patch 9.1.0649 +Problem: Wrong comment for "len" argument of call_simple_func(). +Solution: Remove the "or -1 to use strlen()". Also change its type to + size_t to remove one cast. (zeertzjq). + +Patch 9.1.0650 +Problem: Coverity warning in cstrncmp() (after v9.1.0645). +Solution: Change the type of n2 to int (zeertzjq). + +Patch 9.1.0651 +Problem: ex: trailing dot is optional for :g and :insert/:append +Solution: Don't break out early, when the next command is empty + (Mohamed Akram). + +Patch 9.1.0652 +Problem: too many strlen() calls in syntax.c +Solution: refactor code to reduce the number or strlen() calls, get rid of + un-used SYN_NAMELEN macro (John Marriott). + +Patch 9.1.0653 +Problem: Patch v9.1.0648 not completely right (zeertzjq) +Solution: Remove always true condition. + +Patch 9.1.0654 +Problem: completion does not respect completeslash with fuzzy (egesip) +Solution: Change path separator on Windows, depending on 'completeslash' + option value (glepnir). + +Patch 9.1.0655 +Problem: filetype: goaccess config file not recognized +Solution: Detect 'goaccess.conf' as goaccess filetype, also + include a basic syntax and ftplugin (Adam Monsen) + +Patch 9.1.0656 +Problem: MS-Windows: MSVC Makefile CPU handling can be improved +Solution: Update Makefile and also remove some old code (Ken Takata). + +Patch 9.1.0657 +Problem: MS-Windows: MSVC build time can be optimized +Solution: Stop using Powershell, show detected version, read _MSC_VER + and _MSC_FULL_VER in a single cl execution. (Ken Takata). + +Patch 9.1.0658 +Problem: Coverity warns about dereferencing NULL pointer. +Solution: Bail out if vim_strrchr() returns NULL (zeertzjq). + +Patch 9.1.0659 +Problem: MS-Windows: MSVC Makefile is a bit hard to read (after v9.1.0657). +Solution: Indent the if/else statements to improve readability (Ken Takata). + +Patch 9.1.0660 +Problem: MS-Windows: Shift-Insert does not work on old conhost + (Nick Jensen, after 9.0.1146) +Solution: Handle Shift-Insert specifically (Christian Plewright). + +Patch 9.1.0661 +Problem: the zip plugin is not tested. +Solution: Include tests (Damien). + +Patch 9.1.0662 +Problem: filecopy() may return wrong value when readlink() fails. +Solution: Set ret to -1 so that 0 is returned when readlink() fails + (zeertzjq). + +Patch 9.1.0663 +Problem: tests: zip test still resets 'shellslash' option +Solution: Remove resetting the 'shellslash' option, the zip plugin should now + be able to handle this options. + +Patch 9.1.0664 +Problem: MS-Windows: console vim did not switch back to main screen on + exit +Solution: switch back to main screen on exit (Ken Takata). + +Patch 9.1.0665 +Problem: Locked variable can be changed in a :for loop. +Solution: Always do a full permission check on the first loop iteration + where ASSIGN_DECL is not set (zeertzjq). + +Patch 9.1.0666 +Problem: assert_equal() doesn't show multibyte string correctly +Solution: Properly advance over a multibyte char (zeertzjq). + +Patch 9.1.0667 +Problem: Some other options reset curswant unnecessarily when set. + (Andrew Haust) +Solution: Don't reset curswant when setting 'comments', 'commentstring' + or 'define' (zeertzjq). + +Patch 9.1.0668 +Problem: build-error with python3.12 and stable ABI (zdohnal) +Solution: Add type casts, define Py_INCREF for Python3.12 and higher + (Ken Takata). + +Patch 9.1.0669 +Problem: stable python ABI not used by default +Solution: Enable stable python ABI v3.8 when building with python3/dyn + by default, update the default Python3 version to 3.8 for + MS-Windows (Ken Takata). + +Patch 9.1.0670 +Problem: po file encoding fails on *BSD during make +Solution: Instead of using `$<` make use of variable `$?` which should + be equivalent when the rule is dependent on only a single + file (RestorerZ). + +Patch 9.1.0672 +Problem: marker folds may get corrupted on undo (Yousef Mohammed) +Solution: When adjusting folds, make sure that line1 is the lower limit + and line2 is the upper line limit. In particular, line2 should + not be able to get smaller than line1. + +Patch 9.1.0673 +Problem: Vim9: too recursive func calls when calling super-class method + with non-overridden super-call methods. (Aliaksei Budavei) +Solution: Use interface method, when super is to be used (Ernie Rael) + +Patch 9.1.0674 +Problem: Vim9: compiling abstract method fails because of missing + return (Aliaksei Budavei) +Solution: Don't require a return statement for an abstract method when + compiling (Ernie Rael). + +Patch 9.1.0675 +Problem: Patch v9.1.0674 causes problems +Solution: Revert it for now. + +Patch 9.1.0676 +Problem: style issues with man pages +Solution: Update man pages and test_xxd.vim, since it uses + the xxd man page (RestorerZ) + +Patch 9.1.0677 +Problem: :keeppatterns does not retain the substitute pattern + for a :s command +Solution: Preserve the last substitute pattern when used with the + :keeppatterns command modifier (Gregory Anders). + +Patch 9.1.0678 +Problem: [security]: use-after-free in alist_add() (SuyueGuo) +Solution: Lock the current window, so that the reference to + the argument list remains valid. + +Patch 9.1.0679 +Problem: Rename from w_closing to w_locked is incomplete (after 9.1.0678). +Solution: Rename remaining occurrences of w_closing to w_locked and + update comments (zeertzjq). + +Patch 9.1.0680 +Problem: VMS does not have defined uintptr_t +Solution: Add type definitions (Zoltan Arpadffy). + +Patch 9.1.0681 +Problem: tests: Analyzing failed screendumps is hard +Solution: Facilitate the viewing of rendered screendumps under src/ + add some documentation on how to use the viewdumps.vim + script (Aliaksei Budavei) + +Patch 9.1.0682 +Problem: Vim9: Segfault with uninitialized funcref (Daniel Viberg) +Solution: Check the Funcref for being Null before trying to access it + (Ernie Rael). + +Patch 9.1.0683 +Problem: mode() returns wrong value with mapping +Solution: Change decision priority of VIsual_active and move visual mode a bit + further down (kuuote) + +Patch 9.1.0684 +Problem: completion is inserted on Enter with "noselect" (Carman Fu) +Solution: Check noselect before update compl_shown_match (glepnir). + +Patch 9.1.0685 +Problem: too many strlen() calls in usercmd.c +Solution: Refactor code to reduce the number or strlen() calls (John Marriott) + +Patch 9.1.0686 +Problem: zip-plugin has problems with special characters (user202729) +Solution: Escape '*?[\' on Unix and handle those chars a bit differently on + MS-Windows, add a test, check before overwriting files. + +Patch 9.1.0687 +Problem: Makefile may not install desktop files +Solution: Check for "$(DESTDIR)$(DATADIR)" instead of just "$DESTDIR", + which is usually not defined, add uninstall rules for the + icons and the desktop files. + +Patch 9.1.0688 +Problem: Vim9: dereferences NULL pointer in check_type_is_value() (Suyue Guo) +Solution: Verify that the pointer is not Null. + +Patch 9.1.0689 +Problem: buffer-overflow in do_search() with 'rightleft' (SuyueGuo) +Solution: After reversing the text (which allocates a new buffer), + re-calculate the text length. + +Patch 9.1.0690 +Problem: cannot set special highlight kind in popupmenu +Solution: Add kind_hlgroup item to complete function (glepnir). + +Patch 9.1.0691 +Problem: python3: stable-abi may cause segfault on Python 3.11 + (Audrius Kažukauskas, after v9.1.0668) +Solution: Do not enable the stable Python ABI by default, only when used + with --with-python3-stable-abi argument is given + +Patch 9.1.0692 +Problem: Wrong patlen value in ex_substitute() (after 9.1.0426). +Solution: Compute patlen after finding end separator (zeertzjq). + +Patch 9.1.0693 +Problem: Configure doesn't show result when not using python3 stable + abi (after v9.1.0691) +Solution: Add back AC_MSG_RESULT() (Ken Takata). + +Patch 9.1.0694 +Problem: The matchparen plugin is slow on a long line. +Solution: Don't use a regexp to get char at and before cursor (zeertzjq). + +Patch 9.1.0695 +Problem: tests: test_crash leaves Untitled file around +Solution: Cleanup at the end of the test_crash.vim test file. + +Patch 9.1.0696 +Problem: installing runtime files fails when using SHADOWDIR +Solution: Revert part of v9.1.0609, since runtime/doc/Makefile's default + value for VIMPROG does not work if vim was built in a SHADOWDIR. + (James McCoy) + +Patch 9.1.0697 +Problem: heap-buffer-overflow in ins_typebuf (SuyueGuo) +Solution: When flushing the typeahead buffer, validate that there is enough + space left + +Patch 9.1.0698 +Problem: tests: "Untitled" file not removed when running Test_crash1_3 alone + with TEST_FILTER (after v9.1.0695) +Solution: Use a TearDown function instead of another test (zeertzjq). + +Patch 9.1.0699 +Problem: "dvgo" is not always an inclusive motion (Iain King-Speir) +Solution: Initialize the inclusive flag to false. + +Patch 9.1.0700 +Problem: possible crash with 2byte encoding and glob2regpat() +Solution: Skip over character, if it is multi-byte character. + +Patch 9.1.0701 +Problem: crash with NFA regex engine when searching for composing chars + (SuyueGuo) +Solution: When there is no composing character, break out of the loop + and check that out1 state is not null. + +Patch 9.1.0702 +Problem: Patch 9.1.0700 broke CI +Solution: Revert for now. + +Patch 9.1.0703 +Problem: possible crash with 2-byte encoding and glob2regpat() + (after v9.1.0700, v9.1.0702) +Solution: Include both bytes for a multi-byte character for an + escaped character. + +Patch 9.1.0704 +Problem: inserting with a count is inefficient +Solution: Disable calculation of the cursor position and topline, if a + count has been used (Ken Takata). + +Patch 9.1.0705 +Problem: Sorting of fuzzy filename completion is not stable +Solution: Compare indexes when scores are equal. Fix some typos (zeertzjq). + +Patch 9.1.0706 +Problem: tests: test_gettext fails when using shadow dir +Solution: Link the ru_RU directory into the shadow testdir (James McCoy). + +Patch 9.1.0707 +Problem: [security]: invalid cursor position may cause a crash + (after v9.1.0038) +Solution: Set cursor to the last character in a line, if it would + otherwise point to beyond the line; no tests added, as it + is unclear how to reproduce this. + +Patch 9.1.0708 +Problem: Window is updated with potentially invalid skipcol in recursive + window update path. I.e. cursor outside of visible range in + large line that does not fit. +Solution: Make sure it is valid (Luuk van Baal). + +Patch 9.1.0709 +Problem: GUIEnter not found in Turkish locale (James McCoy) +Solution: Explicitly compare autocommand events by ASCII value and + ignoring locale, because according to the documentation, + events are case insensitive. + +Patch 9.1.0710 +Problem: when a popup window covers the command line, + the command line is not completely cleared on popup_hide() (yu3s) +Solution: Check if the popup window covers the command line and if it + does, set the clear_cmdline flag. + +Patch 9.1.0711 +Problem: tests: test_xxd may file when using different xxd +Solution: Make Test_xxd_color_0 agnostic to xxd's path, similar to + Test_xxd_color_1 by filtering out shell command prompt in + screen dump file (James McCoy). + +Patch 9.1.0712 +Problem: tests: missing dependency of Test_gettext_makefile +Solution: Check that xgettext binary is available, else skip the test + (James McCoy). + +Patch 9.1.0713 +Problem: Newline causes E749 in Ex mode (after 9.1.0573). +Solution: Don't execute empty command followed by a newline. + +Patch 9.1.0714 +Problem: tests: GuiEnter_Turkish test may fail +Solution: The message will be translated if the Turkish message file is + installed. Use gettext() to get the expected message (Ken Takata). + +Patch 9.1.0715 +Problem: Not correctly parsing color names (chdiza, after v9.1.0709) +Solution: Revert part of the Patch that compares the color names and + fall-back to the macro STRICMP. + +Patch 9.1.0716 +Problem: resetting setcellwidth() doesn't update the screen +Solution: Redraw after clearing the cellwidth table (Ken Takata). + +Patch 9.1.0717 +Problem: Unnecessary nextcmd NULL checks in parse_command_modifiers(). +Solution: Remove them (zeertzjq). + +Patch 9.1.0718 +Problem: hard to guess the Vim Runtime Directory +Solution: Set the $MYVIMDIR environment variable to the users + personal runtime directory (e.g. ~/.vim on Linux). + +Patch 9.1.0719 +Problem: Resetting cell widths can make 'listchars' or 'fillchars' + invalid. +Solution: Check for conflicts when resetting cell widths (zeertzjq). + +Patch 9.1.0720 +Problem: Wrong breakindentopt=list:-1 with multibyte chars or TABs in + text matched by 'formatlistpat' (John M Devin) +Solution: Use the width of the match text (zeertzjq). + +Patch 9.1.0721 +Problem: tests: test_mksession does not consider XDG_CONFIG_HOME +Solution: Allow to match $HOME/.vim/ and $HOME/.config/vim for &viewdir + (John M Devin) + +Patch 9.1.0722 +Problem: crash with large id in text_prop interface + prop_add()/prop_add_list() (cposture) +Solution: Error out if the id is > INT_MAX or <= INT_MIN. + +Patch 9.1.0723 +Problem: if_python: dynamic linking fails with python3 >= 3.13 + when using non-stable ABI (zdohnal) +Solution: Do not try to import the privat python symbol + _PyObject_NextNotImplemented (Yee Cheng Chin). + +Patch 9.1.0724 +Problem: if_python: link error with python 3.13 and stable ABI (zdohnal) +Solution: Use the correct stable APIs Py_IncRef and Py_DecRef instead + (Yee Cheng Chin) + +Patch 9.1.0725 +Problem: filetype: swiftinterface files are not recognized +Solution: Detect '*.swiftinterface' files as swift filetype (LosFarmosCTL). + +Patch 9.1.0726 +Problem: not using correct python3 API with dynamic linking +Solution: Use stable IncRef / DecRef in Python 3 dynamic bindings + (Yee Cheng Chin). + +Patch 9.1.0727 +Problem: too many strlen() calls in option.c +Solution: Refactor the code to reduce the number of strlen() calls + (John Marriott) + +Patch 9.1.0728 +Problem: heap-use-after-free in garbage collection with location list + user data. +Solution: Mark user data as in use when no other window is referencing + the location list (zeertzjq). + +Patch 9.1.0729 +Problem: Wrong cursor-screenline when resizing window +Solution: Invalidate saved left_col and right_col when width1 or width2 + change. + +Patch 9.1.0730 +Problem: Crash with cursor-screenline and narrow window (elig0n) +Solution: Don't set right_col when width2 is 0 (zeertzjq). + +Patch 9.1.0731 +Problem: inconsistent case sensitive extension matching +Solution: Unify case sensitive extension matching (Evgeni Chasnovski). + +Patch 9.1.0732 +Problem: xxd: cannot use -b and -i together (Irgendwer) +Solution: Implement the missing changes (Andre Chang) + +Patch 9.1.0733 +Problem: keyword completion does not work with fuzzy (egesip) +Solution: Handle ctrl_x_mode_normal() specifically (glepnir). + +Patch 9.1.0734 +Problem: filetype: jinja files are not recognized +Solution: Detect '*.jinja' files a jinja filetype, + include jinja syntax script (Gregory Anders) + +Patch 9.1.0735 +Problem: filetype: salt files are not recognized +Solution: Detect '*.sls' files as filetype salt, + include a syntax script (Gregory Anders) + +Patch 9.1.0736 +Problem: Unicode tables are outdated +Solution: Update Unicode tables to v16 + +Patch 9.1.0737 +Problem: Asynchronous terminal jobs occasionally require more time + to complete and redraw the window +Solution: Increase the sleep value from 10 to 50 milliseconds + (Aliaksei Budavei). + +Patch 9.1.0738 +Problem: filetype: rapid files are not recognized +Solution: Detect '*.sysx' and '*.modx' as rapid filetype (KnoP-01). + +Patch 9.1.0739 +Problem: [security]: use-after-free in ex_getln.c +Solution: free pointer p a bit later (John Marriott). + +Patch 9.1.0740 +Problem: incorrect internal diff with an empty file +Solution: Set pointer to NULL, instead of using an empty line file + (Yukihiro Nakadaira). + +Patch 9.1.0741 +Problem: No way to get prompt for input()/confirm() +Solution: Add getcmdprompt() function (Shougo Matsushita). + +Patch 9.1.0742 +Problem: getcmdprompt() implementation can be improved +Solution: Improve and simplify it (h-east). + +Patch 9.1.0743 +Problem: diff mode does not handle overlapping diffs correctly +Solution: Correct the logic to handle overlapping blocks + (Yukihiro Nakadaira) + +Patch 9.1.0744 +Problem: filetype: notmuch configs are not recognised +Solution: Detect more notmuch profile configuration files + as dosini filetype (Julio B). + +Patch 9.1.0745 +Problem: filetype: bun and deno history files not recognized +Solution: Detect '.bun_repl_history' and 'deno_history.txt' as + javascript filetype (Wu, Zhenyu). + +Patch 9.1.0746 +Problem: Test_halfpage_longline() fails on large terminals (lazypingu) +Solution: Use a window with known width (zeertzjq). + +Patch 9.1.0747 +Problem: various typos in repo found +Solution: Fix typos (zeertzjq). + +Patch 9.1.0748 +Problem: The :keep{alt,jumps,marks,patterns} commmands are sometimes + misidentified as :k. +Solution: Make sure one_letter_cmd() only returns true for :k and not + other :keep* commands (Doug Kearns). + +Patch 9.1.0749 +Problem: filetype: http files not recognized +Solution: Detect '*.http' as http filetype, include + http filetype plugin (Riley Bruins) + +Patch 9.1.0750 +Problem: there are some Win9x legacy references +Solution: Remove those mentions (Nir Lichtman). + +Patch 9.1.0751 +Problem: Error callback for term_start() not used (darkseid-is) +Solution: Attach pipe to stderr if an error callback exists + +Patch 9.1.0752 +Problem: can set cedit to an invalid value +Solution: Check that the value is a valid key name (Milly) + +Patch 9.1.0753 +Problem: Wrong display when typing in diff mode with 'smoothscroll'. +Solution: Use adjust_plines_for_skipcol() (zeertzjq). + +Patch 9.1.0754 +Problem: fixed order of items in insert-mode completion menu +Solution: Introduce the 'completeitemalign' option with default + value "abbr,kind,menu" (glepnir). + +Patch 9.1.0755 +Problem: quickfix list does not handle hardlinks well +Solution: Store original file name with quickfix entry (Austin Chang) + +Patch 9.1.0756 +Problem: missing change from Patch v9.1.0754 +Solution: Use correct width for the actual item in pum_redraw() (glepnir). + +Patch 9.1.0757 +Problem: tests: messages files contains ANSI escape sequences +Solution: Filter those out in runtests.vim + +Patch 9.1.0758 +Problem: it's possible to set an invalid key to 'wildcharm' +Solution: Error out, if the 'wildcharm' value is an invalid key (Milly). + +Patch 9.1.0759 +Problem: screenpos() may return invalid position after switching buffers + (Greg Hurrell) +Solution: Reset w_leftcol if wrapping has been set after copying wrap option. + +Patch 9.1.0760 +Problem: tests: no error reported, if gen_opt_test.vim fails +Solution: Make Vim exit with return code 1 in case of any error (Milly). + +Patch 9.1.0761 +Problem: :cd completion fails on Windows with backslash in path +Solution: Switch no_bslash argument to FALSE in file_pat_to_reg_pat() + +Patch 9.1.0762 +Problem: 'cedit', 'termwinkey' and 'wildchar' may not be parsed correctly +Solution: improve string_to_key() function in option.c (Milly). + +Patch 9.1.0763 +Problem: tests: cannot run single syntax tests +Solution: Support running a subset of syntax tests (Aliaksei Budavei). + +Patch 9.1.0764 +Problem: [security]: use-after-free when closing a buffer +Solution: When splitting the window and editing a new buffer, + check whether the newly to be edited buffer has been marked + for deletion and abort in this case. + +Patch 9.1.0765 +Problem: No test for Patches 6.2.418 and 7.3.489 +Solution: Add a test. Fix some whitespace problems in test_mapping.vim. + Document the behavior (zeertzjq). + +Patch 9.1.0766 +Problem: too many strlen() calls in ex_getln.c +Solution: Refactor the code to reduce the number of strlen() calls + (John Marriott). + +Patch 9.1.0767 +Problem: A cmdlen == 0 condition is always true as ccline.cmdlen == 0 + was already checked above (after v9.1.0766). +Solution: Remove the condition and the variable (zeertzjq). + +Patch 9.1.0768 +Problem: MS-Windows: incorrect cursor position when restoring screen + (after v9.1.0664) +Solution: Restore the VTP command for switching screens back to + termcap_mode_end() (William Bresler). + +Patch 9.1.0769 +Problem: filetype: MLIR files are not recognized +Solution: Detect '*.mlir' files as mlir filetype, + include a mlir filetype plugin (Wu, Zhenyu). + +Patch 9.1.0770 +Problem: current command completion is a bit limited +Solution: Add the shellcmdline completion type and getmdcomplpat() + function (Ruslan Russkikh). + +Patch 9.1.0771 +Problem: Currently completion attribute hl_group is combined with + all items, which is redundant and confusing with kind_hlgroup +Solution: Renamed to abbr_hlgroup and combine it only with the abbr item + (glepnir). + +Patch 9.1.0772 +Problem: some missing changes from v9.1.0771 +Solution: Use correct highlighting attribute and adjust comments (glepnir). + +Patch 9.1.0773 +Problem: filetype: some Apache files are not recognized +Solution: Detect more config files from the Apache source + distribution as filetype apache (nisbet-hubbard) + +Patch 9.1.0774 +Problem: "shellcmdline" doesn't work with getcompletion(). +Solution: Use set_context_for_wildcard_arg() (zeertzjq). + +Patch 9.1.0775 +Problem: tests: not enough tests for setting options +Solution: Add more comprehensive tests to test_options (Milly). + +Patch 9.1.0776 +Problem: test_strftime may fail because of missing TZ data +Solution: Use GMT offsets to validate timezone differences (James McCoy). + +Patch 9.1.0777 +Problem: filetype: Some upstream php files are not recognized +Solution: Detect more config files from the PHP source + distribution as filetype ini (nisbet-hubbard). + +Patch 9.1.0778 +Problem: filetype: lf config files are not recognized +Solution: Detect lfrc files as lf filetype, include a syntax + script for lf files (Andis Spriņķis). + +Patch 9.1.0779 +Problem: filetype: neomuttlog files are not recognized +Solution: Detect '*.neomuttdebug' file as neomuttlog filetype, + include neomuttlog syntax script (Richard Russon). + +Patch 9.1.0780 +Problem: MS-Windows: incorrect Win32 error checking +Solution: Fix wrong order of error handling and perform + some minor refactoring (Nir Lichtman). + +Patch 9.1.0781 +Problem: tests: test_filetype fails (clason) (after v9.1.0779). +Solution: Use correct filename for neomuttlog filetype. + +Patch 9.1.0782 +Problem: tests: using wrong neomuttlog file name +Solution: Use correct file name. + +Patch 9.1.0783 +Problem: 'spell' option setting has problems +Solution: correctly check for comma for 'spellfile' option, + remove unnecessary checks, refactor slightly (Milly) + +Patch 9.1.0784 +Problem: there are several problems with python 3.13 +Solution: Fix the problems in the python3 interface (Boris Staletic) + +Patch 9.1.0785 +Problem: cannot preserve error position when setting quickfix lists +Solution: Add the 'u' action for setqflist()/setloclist() and try + to keep the closes target position (Jeremy Fleischman). + +Patch 9.1.0786 +Problem: tests: quickfix update test does not test location list + (after: v9.1.0.785) +Solution: Update Test_quickfix_buffer_contents to test with location + lists (Yegappan Lakshmanan). + +Patch 9.1.0787 +Problem: cursor position changed when using hidden terminal + and BufFilePost autocommand (Mizuno Jan Yuta) +Solution: Save and restore cursor position. + +Patch 9.1.0788 +Problem: 27;u is not decoded to literal Escape in kitty/foot +Solution: Disable XTerm modifyOtherKeys form 1 when the kitty protocol is enabled + (Christian Fillion) + +Patch 9.1.0789 +Problem: tests: ':resize + 5' has invalid space after '+' +Solution: Correct the test (Milly). + +Patch 9.1.0790 +Problem: Amiga: AmigaOS4 build should use default runtime (newlib) +Solution: Remove clib2 from compiler / linker flags (Ola Söder). + +Patch 9.1.0791 +Problem: tests: errors in gen_opt_test.vim are not shown +Solution: update gen_opt_test.vim and write test.log, + let the makefile output test.log (Milly). + +Patch 9.1.0792 +Problem: tests: Test_set_values() is not comprehensive enough +Solution: Add a lot more test cases (Milly). + +Patch 9.1.0793 +Problem: xxd: -e does add one extra space +Solution: fix it, refactor and merge some code (Aapo Rantalainen). + +Patch 9.1.0794 +Problem: tests: tests may fail on Windows environment +Solution: Use shellcmdflag=/D to skip executing autorun from the registry + (Milly). + +Patch 9.1.0795 +Problem: filetype: Vivado memory info file are not recognized +Solution: Detect '*.mmi' memory info file as xml filetype (Wu, Zhenyu). + +Patch 9.1.0796 +Problem: filetype: libtool files are not recognized +Solution: Detect '*.{lo,la,lai}' as sh filetype (Wu, Zhenyu). + +Patch 9.1.0797 +Problem: testing of options can be further improved +Solution: Split the generated option test into test_options_all.vim, + add more test cases, save and restore values, fix use-after-free. + +Patch 9.1.0798 +Problem: too many strlen() calls in cmdhist.c +Solution: Refactor code and remove strlen() calls (John Marriott). + +Patch 9.1.0799 +Problem: tests: gettwinvar()/gettabwinvar() tests are not comprehensive +Solution: Add more tests (Milly). + +Patch 9.1.0800 +Problem: tests: no error check when setting global 'termwinsize' +Solution: Also validate when using setglobal (Milly). + +Patch 9.1.0801 +Problem: tests: no error check when setting global 'termwinkey' +Solution: Also validate when using setglobal (Milly). + +Patch 9.1.0802 +Problem: tests: no error check when setting global 'fdm' to empty value +Solution: Also check global 'fdm' value for being empty (Milly). + +Patch 9.1.0803 +Problem: tests: no error check when setting global 'isk' +Solution: Also parse and check global 'isk' value (Milly). + +Patch 9.1.0804 +Problem: tests: no error check when setting global 'cc' +Solution: Also parse and check global 'cc' value (Milly). + +Patch 9.1.0805 +Problem: tests: minor issues in gen_opt_test.vim +Solution: Fix restore value for 'undolevels', fix comment, fix + wrong cpo value, add equality test for global-local options on + switchback (Milly). + +Patch 9.1.0806 +Problem: tests: no error check when setting global 'briopt' +Solution: Also parse and check global 'briopt' value (Milly). + +Patch 9.1.0807 +Problem: tests: having 'nolist' in modelines isn't always desired +Solution: Remove 'nolist' from modeline (zeertzjq). + +Patch 9.1.0808 +Problem: Terminal scrollback doesn't shrink when reducing + 'termwinscroll' +Solution: Check if option value was decreased (Milly). + +Patch 9.1.0809 +Problem: filetype: petalinux config files not recognized +Solution: Detect 'project-spec/*.conf' files as bitbake filetype (Wu, Zhenyu). + +Patch 9.1.0810 +Problem: cannot easily adjust the |:find| command +Solution: Add support for the 'findexpr' option (Yegappan Lakshmanan). + +Patch 9.1.0811 +Problem: :find expansion does not consider 'findexpr' +Solution: Support expanding :find command argument using 'findexpr' + (Yegappan Lakshmanan). + +Patch 9.1.0812 +Problem: Coverity warns about dereferencing NULL ptr in check_colorcolumn() +Solution: Verify that wp is not null before accessing it. + +Patch 9.1.0813 +Problem: no error handling with setglobal and number types +Solution: Validate values when using :setglobal with number option types + (Milly). + +Patch 9.1.0814 +Problem: mapset() may remove unrelated mapping whose {rhs} matches the + restored mapping's {lhs}. +Solution: Only match by {lhs} when unmapping for mapset() (zeertzjq). + +Patch 9.1.0815 +Problem: "above" virtual text causes wrong 'colorcolumn' position (@matrdr) +Solution: Use the number of cells instead of bytes for vcol_off_tp + (zeertzjq). + +Patch 9.1.0816 +Problem: tests: not clear what tests cause asan failures +Solution: Append testname to $ASAN_OPTIONS. + +Patch 9.1.0817 +Problem: termdebug: cannot evaluate expr in a popup +Solution: Enhance termdebug plugin and allow to evaluate expressions in + a popup window, add a unit test (Peter Wolf). + +Patch 9.1.0818 +Problem: some global functions are only used in single files +Solution: Refactor code slightly and make some more functions static + (Yegappan Lakshmanan). + +Patch 9.1.0819 +Problem: tests: need a test for findexpr and vim9 imported func +Solution: Add a test for 'findexpr' and Vim9 imported script + (Yegappan Lakshmanan) + +Patch 9.1.0820 +Problem: tests: Mac OS tests are too flaky +Solution: Increase max test timeout to 25 minutes, allow up to 10 retries on + Mac OS runners, refactor runtest.vim (Milly). + +Patch 9.1.0821 +Problem: 'findexpr' completion doesn't set v:fname to cmdline argument. +Solution: Set v:fname to the cmdline argument as-is (zeertzjq). + +Patch 9.1.0822 +Problem: topline might be changed in diff mode unexpectedly (Jaehwang Jung) +Solution: Do not re-calculate topline, when using line() func in diff mode. + +Patch 9.1.0823 +Problem: filetype: Zephyr overlay files not recognized +Solution: Detect '*.overlay' files as dts filetype, include syntax tests for + DTS files (Xudong Zheng). + +Patch 9.1.0824 +Problem: too many strlen() calls in register.c +Solution: Refactor code, add string_T struct to keep track of string lengths + (John Marriott). + +Patch 9.1.0825 +Problem: compile error for non-diff builds (after v9.1.0822) +Solution: Add #ifdef FEAT_DIFF (John Marriott). + +Patch 9.1.0826 +Problem: filetype: sway files are not recognized +Solution: Detect '*.sw' files as sway filetype, include a filetype plugin + (Riley Bruins). + +Patch 9.1.0827 +Problem: CI: tests can be improved +Solution: Collect failed indent tests, raise timeout for search() + functions when using ASAN/Valgrind (Aliaksei Budavei). + +Patch 9.1.0828 +Problem: string_T struct could be used more often +Solution: Refactor code and make use of string_T struct for key-value pairs, + reformat overlong lines (John Marriott). + +Patch 9.1.0829 +Problem: Vim source code uses a mix of tabs and spaces +Solution: Expand tabs in sound.c, this is an experiment (Luca Saccarola). + +Patch 9.1.0830 +Problem: using wrong highlight group for spaces for popupmenu +Solution: Use original attribute instead of combined attributed (glepnir). + +Patch 9.1.0831 +Problem: 'findexpr' can't be used for lambads (Justin Keyes) +Solution: Replace the findexpr option with the findfunc option + (Yegappan Lakshmanan). + +Patch 9.1.0832 +Problem: :set doesn't work for 'cot' and 'bkc' after :setlocal. +Solution: Clear the local flags when using :set (zeertzjq). + +Patch 9.1.0833 +Problem: CI: recent ASAN changes do not work for indent tests +Solution: Move code to runtime/indent/testdir/runtest.vim (Aliaksei Budavei). + +Patch 9.1.0834 +Problem: tests: 2html test fails (after b256221e8377) +Solution: Adjust testdir/samples/Test_tohtml_basic.c.html (Aliaksei Budavei). + +Patch 9.1.0835 +Problem: :setglobal doesn't work properly for 'ffu' and 'tsrfu' when + the local value is set (after v9.1.0831) +Solution: Check os_flags instead of buffer option variable (zeertzjq). + +Patch 9.1.0836 +Problem: the vimtutor can be improved +Solution: Port and include the interactive vimtutor plugin from Neovim + (by Felipe Morales) (Yegappan Lakshmanan). + +Patch 9.1.0837 +Problem: Cross-compiling to good modern operating systems is difficult as + configure assumes obscure bugs are present by default. However, + most core autoconf-based packages today assume features work + when in doubt, making cross-compilation easier. +Solution: Assume features work by default and continue to issue a warning + with the appropriate cache variable. This solution shifts the + burden onto the users of rare buggy operating systems and + makes cross-compilation work out of the box for everyone else. + +Patch 9.1.0838 +Problem: vimtutor is bash-specific (after 17c71daf83f45c3ee8) +Solution: Port back to POSIX sh (Aliaksei Budavei). + +Patch 9.1.0839 +Problem: filetype: leo files are not recognized +Solution: Detect '*.leo' files as leo filetype, include a filetype plugin + (Riley Bruins) + +Patch 9.1.0840 +Problem: filetype: idris2 files are not recognized +Solution: Detect '*.idr' files as idris2, '*.lidr' files as lidris2 + and '*.ipkg' files as ipkg filetype (Serhii Khoma) + +Patch 9.1.0841 +Problem: tests: still preferring python2 over python3 +Solution: Prefer Python 3 when picking a Python program in Vim tests, + by checking for the more specific python version first and + only when python3 not found, check for the python binary + (Yee Cheng Chin). + +Patch 9.1.0842 +Problem: not checking for the sync() systemcall +Solution: Check for sync in configure script, fix related #ifdefs + (Jonas Termansen). + +Patch 9.1.0843 +Problem: too many strlen() calls in undo.c +Solution: Refactor code and remove strlen() calls, update test_undo.vim + and close remaining open swap files (John Marriott). + +Patch 9.1.0844 +Problem: if_python: no way to pass local vars to python +Solution: Add locals argument to py3eval(), pyeval() and pyxeval() + (Ben Jackson). + +Patch 9.1.0845 +Problem: vimtutor shell script can be improved +Solution: Further improve the vimtutor shell script (Aliaksei Budavei). + +Patch 9.1.0846 +Problem: debug symbols for xxd are not cleaned in Makefile +Solution: Remove xxd.dSYM in xxds Makefile, call xxd clean target from + main Makefile (Yee Cheng Chin) + +Patch 9.1.0847 +Problem: tests: test_popupwin fails because of updated main help file +Solution: Normalize Last Change header in test_popup_setbuf screendumps + +Patch 9.1.0848 +Problem: if_lua: v:false/v:true are not evaluated to boolean +Solution: Use lua_pushboolean() instead of lua_pushinteger() (zeertzjq). + +Patch 9.1.0849 +Problem: there are a few typos in the source. +Solution: Correct typos (zeertzjq). + +Patch 9.1.0850 +Problem: Vim9: cannot access nested object inside objects + (lifepillar, 91khr, mawkish) +Solution: Add support for accessing an object member using a "any" + variable type (Yegappan Lakshmanan). + +Patch 9.1.0851 +Problem: too many strlen() calls in getchar.c +Solution: Refactor code and reduce strlen() calls (John Marriott). + +Patch 9.1.0852 +Problem: No warning when X11 registers are not available (delvh) +Solution: Output W23 once when connection to X11 clipboard/selection + is not possible, mention in the documentation, that register 0 + will be used instead. + +Patch 9.1.0853 +Problem: filetype: kubernetes config file not recognized +Solution: Detect '/.kube/config' file as yaml filetype (Jonathan Lopez). + +Patch 9.1.0854 +Problem: cannot get terminal cell size +Solution: Add getcellpixels() function to return xpixel * ypixel + cell size on terminal Unix (mikoto2000). + +Patch 9.1.0855 +Problem: setting 'cmdheight' may cause hit-enter-prompt and echo output + to be missing +Solution: Before cleaning the cmdline, check the need_wait_return flag + (nwounkn). + +Patch 9.1.0856 +Problem: mouseshape might be wrong on r and gr +Solution: Call update_mousesape(-1) immediately (Yee Cheng Chin). + +Patch 9.1.0857 +Problem: xxd: --- is incorrectly recognized as end-of-options +Solution: improve xxds end-of-option parser (DungSaga). + +Patch 9.1.0858 +Problem: Coverity complains about dead code (after v9.1.0852) +Solution: adjust #ifdef FEAT_CLIPBOARD. + +Patch 9.1.0859 +Problem: several problems with the GLVS plugin +Solution: fix issues, add regression tests, require at least Vim 9.1 + (GuyBrush) + +Patch 9.1.0860 +Problem: tests: mouse_shape tests use hard code sleep value (Bram Moolenaar) +Solution: Use WaitForAssert() instead (Yee Cheng Chin). + +Patch 9.1.0861 +Problem: Vim9: no runtime check for object member access of any var + (after: 9.1.0850) +Solution: Add runtime type compatibility check for object member + accessed using a any variable (Yegappan Lakshmanan). + +Patch 9.1.0862 +Problem: 'wildmenu' not enabled by default in nocp mode +Solution: Promote the default Vim value to true, it has been enabled + in defaults.vim anyhow, so remove it there (Luca Saccarola). + +Patch 9.1.0863 +Problem: getcellpixels() can be further improved +Solution: Improve it further, add more tests (mikoto2000). + +Patch 9.1.0864 +Problem: message history is fixed to 200 +Solution: Add the 'msghistory' option, increase the default value to 500 + (Shougo Matsushita). + +Patch 9.1.0865 +Problem: filetype: org files are not recognized +Solution: Detect '*.org' files as 'org' filetype, + include filetype and syntax plugin (Luca Saccarola). + +Patch 9.1.0866 +Problem: filetype: LLVM IR files are not recognized +Solution: Detect '*.ll' files either as lifelines or llvm filetype + (Wu, Zhenyu). + +Patch 9.1.0867 +Problem: ins_compl_add() has too many args +Solution: Refactor it and use an int array instead of 2 separate int + args (glepnir). + +Patch 9.1.0868 +Problem: the warning about missing clipboard can be improved + (after v9.1.0852) +Solution: Use different warnings depending on whether or not clipboard + support is included in Vim, update related documentation + +Patch 9.1.0869 +Problem: curswant not set on gm in folded line (citizenmatt) +Solution: In a folded line, call update_curswant_force(). + +Patch 9.1.0870 +Problem: too many strlen() calls in eval.c +Solution: Refactor eval.c to remove calls to STRLEN() (John Marriott). + +Patch 9.1.0871 +Problem: getcellpixels() can be further improved +Solution: Fix floating point exception, implement getcellpixels() in the + UI (mikoto2000). + +Patch 9.1.0872 +Problem: No test for W23 message (after v9.1.0868) +Solution: Check for W23 message when accessing the clipboard fails. + +Patch 9.1.0873 +Problem: filetype: Vivado files are not recognized +Solution: Detect '*.mss' files as 'mss' filetype (Wu, Zhenyu). + +Patch 9.1.0874 +Problem: filetype: karel files are not detected +Solution: Detect '*.kl' files as karel filetype, include syntax and filetype + plugin (Kirill Morozov). + +Patch 9.1.0875 +Problem: filetype: hyprlang detection can be improved +Solution: Detect '/hypr/*.conf' files as hyprlang filetype, + include basic syntax highlighting (Luca Saccarola). + +Patch 9.1.0876 +Problem: filetype: openCL files are not recognized +Solution: Detect '*.cl' files as opencl or lisp filetype, + include a opencl syntax and filetype plugin (Wu, Zhenyu). + +Patch 9.1.0877 +Problem: tests: missing test for termdebug + decimal signs +Solution: Add a termdebug test (Ubaldo Tiberi). + +Patch 9.1.0878 +Problem: termdebug: cannot enable DEBUG mode +Solution: Allow to specify DEBUG mode (Ubaldo Tiberi). + +Patch 9.1.0879 +Problem: source is not consistently formatted +Solution: Reformat sign.c and sound.c (Luca Saccarola). + +Patch 9.1.0880 +Problem: filetype: C3 files are not recognized +Solution: Detect '*.c3*' files as c3 filetype (Turiiya). + +Patch 9.1.0881 +Problem: GUI: message dialog may not get focus +Solution: Add window manager hint to give focus to the dialog (Chris White). + +Patch 9.1.0882 +Problem: too many strlen() calls in insexpand.c +Solution: Refactor insexpand.c and reduce number of calls to STRLEN(), + fix a warning get_next_filename_completion(), add new function + ins_compl_leader_len() (John Marriott). + +Patch 9.1.0883 +Problem: message history cleanup is missing some tests +Solution: Add tests, refactor common code into did_set_msghistory() + (Shougo Matsushita). + +Patch 9.1.0884 +Problem: gcc warns about uninitialized variable in vim_strnicmp_asc() +Solution: Initialize variable to 1 (John Marriott). + +Patch 9.1.0885 +Problem: style of sign.c can be improved +Solution: Refactor code (Luca Saccarola). + +Patch 9.1.0886 +Problem: filetype: debian control file not detected +Solution: Detect 'debian/control' files as debcontrol filetype. + +Patch 9.1.0887 +Problem: Wrong expression in sign.c (after v9.1.0885) +Solution: Remove the duplicate expression. + +Patch 9.1.0888 +Problem: leftcol property not available in getwininfo() +Solution: Add leftcol property property (glepnir). + +Patch 9.1.0889 +Problem: Possible unnecessary redraw after adding/deleting lines. +Solution: Check b_mod_set before using b_mod_xlines to avoid using stale + b_mod_xlines value (zeertzjq). + +Patch 9.1.0890 +Problem: %! item not allowed for 'rulerformat' (yatinlala) +Solution: Also allow to use %! for rulerformat option + (Yegappan Lakshmanan). + +Patch 9.1.0891 +Problem: building the completion list array is inefficient +Solution: Refactor and improve ins_compl_build_pum() func (glepnir). + +Patch 9.1.0892 +Problem: the max value of 'tabheight' is limited by other tabpages +Solution: Limit the maximum value of 'cmdheight' to the current tabpage only. + (Milly) + +Patch 9.1.0893 +Problem: No test that undofile format does not regress +Solution: Include a sample undofile to make sure we are always able to + read it. + +Patch 9.1.0894 +Problem: No test for what the spotbug compiler parses +Solution: Test &makeprg for the SpotBugs compiler plugin (Aliaksei Budavei). + +Patch 9.1.0895 +Problem: default history value is too small +Solution: Promote the change from defaults.vim back to the C core, so increase + the default 'history' option value from 50 to 200 (Lucca Saccarola) + +Patch 9.1.0896 +Problem: completion list wrong after v9.1.0891 +Solution: Update compl_mach_array after leader change (glepnir). + +Patch 9.1.0897 +Problem: filetype: pyrex files are not detected +Solution: Detect '*.pxi' and '*.pyx+' as pyrex filetype (user202729). + +Patch 9.1.0898 +Problem: runtime(compiler): pytest compiler not included +Solution: Include pytest compiler, update the compiler completion test + (Konfekt). + +Patch 9.1.0899 +Problem: default for 'backspace' can be set in C code +Solution: Promote the default for 'backspace' from defaults.vim to the C + code (Luca Saccarola). + +Patch 9.1.0900 +Problem: Vim9: digraph_getlist() does not accept bool argument (Maxim Kim) +Solution: Accept boolean as first argument (Yegappan Lakshmanan). + +Patch 9.1.0901 +Problem: MS-Windows: vimtutor batch script can be improved +Solution: Update vimtutor.bat, validate languages using Powershell + cultureinfo (RestorerZ). + +Patch 9.1.0902 +Problem: filetype: Conda configuration files are not recognized +Solution: Detect '.condarc' and 'condarc' files as yaml filetype (zeertzjq). + +Patch 9.1.0903 +Problem: potential overflow in spell_soundfold_wsal() +Solution: Protect wres from buffer overflow, by checking the length + (Zdenek Dohnal) + +Patch 9.1.0904 +Problem: Vim9: copy-paste error in class_defining_member() +Solution: Use variable type VAR_CLASS instead (Zdenek Dohnal). + +Patch 9.1.0905 +Problem: Missing information in CompleteDone event +Solution: Add complete_word and complete_type to v:event dict (glepnir). + +Patch 9.1.0906 +Problem: filetype: Nvidia PTX files are not recognized +Solution: Detect '*.ptx' files as ptx filetype (Yinzuo Jiang). + +Patch 9.1.0907 +Problem: printoptions:portrait does not change postscript Orientation +Solution: Set Orientation depending on portrait suboption. + +Patch 9.1.0908 +Problem: not possible to configure :messages +Solution: Add the 'messagesopt' option (Shougo Matsushita). + +Patch 9.1.0909 +Problem: Vim9: crash when calling instance method (Igbanam Ogbuluijah) +Solution: Pass the object when calling a partial function + (Yegappan Lakshmanan). + +Patch 9.1.0910 +Problem: 'messagesopt' does not check max wait time (after v9.1.0908) +Solution: Check for max wait value (Shougo Matsushita). + +Patch 9.1.0911 +Problem: Variable name for 'messagesopt' doesn't match short name + (after v9.1.0908) +Solution: Change p_meo to p_mopt. Add more details to docs (zeertzjq). + +Patch 9.1.0912 +Problem: xxd: integer overflow with sparse files and -autoskip +Solution: Reset zero_seen when at the limit, change the type to char + (sendittothenewts). + +Patch 9.1.0913 +Problem: no error check for neg values for 'messagesopt' (after v9.1.0908). +Solution: Add additional error checks and tests (h-east). + +Patch 9.1.0914 +Problem: Vim9: compile_assignment() is too long +Solution: Refactor compile_assignment() into smaller functions + (Yegappan Lakshmanan) + +Patch 9.1.0915 +Problem: GVim: default font size a bit too small +Solution: Increase guifont size to 12 pt on GTK builds of gVim (matveyt). + +Patch 9.1.0916 +Problem: messages.c is exceeding 80 columns +Solution: Slightly reformat messages.c (h-east). + +Patch 9.1.0917 +Problem: various vartabstop and shiftround bugs when shifting lines +Solution: Fix the bugs, add new tests for shifting lines in various ways + (Gary Johnson). + +Patch 9.1.0918 +Problem: tiny Vim crashes with fuzzy buffer completion +Solution: Adjust #ifdefs in ExpandBufnames() (826814741_6). + +Patch 9.1.0919 +Problem: filetype: some assembler are files not recognized +Solution: Detect '*.nasm' files as nasm filetype and '*.masm' as masm + filetype (Wu, Zhenyu). + +Patch 9.1.0920 +Problem: Vim9: compile_assignment() too long +Solution: Refactor compile_assignment() function and split up into + smaller parts (Yegappan Lakshmanan). + +Patch 9.1.0921 +Problem: popupmenu logic is a bit convoluted +Solution: Slightly refactor logic and use MIN/MAX() macros to simplify + (glepnir). + +Patch 9.1.0923 +Problem: wrong MIN macro in popupmenu.c (after v9.1.0921) (zeertzjq) +Solution: Change it to MAX(). + +Patch 9.1.0923 +Problem: too many strlen() calls in filepath.c +Solution: Refactor filepath.c and remove calls to STRLEN(), unify + dos_expandpath() and unix_expandpath() into a single function. + +Patch 9.1.0924 +Problem: Patch 9.1.0923 causes issues (Shane-XB-Qian) +Solution: Back-out the change. + +Patch 9.1.0925 +Problem: Vim9: expression compiled when not necessary +Solution: Do not compile when ctx_skip is set, add a few more + Vim9 expressions tests (Yegappan Lakshmanan). + +Patch 9.1.0926 +Problem: filetype: Pixi lock files are not recognized +Solution: Detect "pixi.lock" file as yaml filetype (Brandon Maier). + +Patch 9.1.0927 +Problem: style issues in insexpand.c +Solution: Add braces, use ternary operator to improve style (glepnir). + +Patch 9.1.0928 +Problem: tests: test_popupwin fails because the filter command fails +Solution: Add the "e" flag to the :s command to normalize the + screendumps Last Change header so that it doesn't fail on + "Pattern not found" + +Patch 9.1.0929 +Problem: filetype: lalrpop files are not recognized +Solution: Detect '*.lalrpop' files as lalrpop filetype (David Thievon) + +Patch 9.1.0930 +Problem: tests: test_terminal2 may hang in GUI mode +Solution: Break the loop in gui_mch_update() after at most 99 iterations + (h-east). + +Patch 9.1.0931 +Problem: ml_get error in terminal buffer (user202729) +Solution: Call update_topline() in win_enter_ext() for terminal buffers + (h-east). + +Patch 9.1.0932 +Problem: new Italian tutor not installed +Solution: Add Makefile rule, include it into the Filelist + ("Philip H." <47042125+pheiduck@users.noreply.github.com>). + +Patch 9.1.0933 +Problem: Vim9: vim9compile.c can be further improved +Solution: Further refactor the compile assignment code + (Yegappan Lakshmanan). + +Patch 9.1.0934 +Problem: hard to view an existing buffer in the preview window +Solution: Add the :pbuffer command (Yinzuo Jiang). + +Patch 9.1.0935 +Problem: SpotBugs compiler can be improved +Solution: runtime(compiler): Improve defaults and error handling for + SpotBugs; update test_compiler.vim (Aliaksei Budavei). + +Patch 9.1.0936 +Problem: cannot highlight completed text +Solution: (optionally) highlight auto-completed text using the + ComplMatchIns highlight group (glepnir). + +Patch 9.1.0937 +Problem: test_undolist() is flaky +Solution: Allow to match one additional optional whitespace char. + +Patch 9.1.0938 +Problem: exclusive selection not respected when re-selecting block mode + (Matt Ellis) +Solution: Advance selection by another character when using + selection=exclusive and visual block mode + +Patch 9.1.0939 +Problem: make installtutor fails + (Antonio Giovanni Colombo, after v9.1.0932) +Solution: Fix Makefile rule. + +Patch 9.1.0940 +Problem: Wrong cursor shape with "gq" and 'indentexpr' executes :normal +Solution: Update cursor and mouse shape after restoring old_State (zeertzjq). + +Patch 9.1.0941 +Problem: ComplMatchIns doesn't work after multibyte chars (after v9.1.0936). +Solution: Use (ptr - line) instead of wlv.col (zeertzjq). + +Patch 9.1.0942 +Problem: a few typos were found +Solution: fix them (zeertzjq). + +Patch 9.1.0943 +Problem: vim9compile.c can be further improved +Solution: Refactor the compile_lhs function (Yegappan Lakshmanan). + +Patch 9.1.0944 +Problem: tests: test_registers fails when not run under X11 +Solution: filter out warning message. + +Patch 9.1.0945 +Problem: ComplMatchIns highlight doesn't end after inserted text. +Solution: Handle ComplMatchIns highlight more like search highlight. + Fix off-by-one error. Handle deleting text properly (zeertzjq). + +Patch 9.1.0946 +Problem: cross-compiling fails on osx-arm64 +Solution: use vim_cv_timer_create_with_lrt() instead of + vim_cv_timer_create_works() (Brandon Maier). + +Patch 9.1.0947 +Problem: Coverity comlains about un-initialized var (after v9.1.0943). +Solution: Initialize variable (Yegappan Lakshmanan). + +Patch 9.1.0948 +Problem: Missing cmdline completion for :pbuffer. +Solution: Add cmdline completion for :pbuffer like :buffer (zeertzjq). + +Patch 9.1.0949 +Problem: popups inconsistently shifted to the left +Solution: Always shift non-fixed popups to the left when the + text would be truncated (Boris Staletic). + +Patch 9.1.0950 +Problem: filetype: fennelrc files are not recognized +Solution: Detect 'fennelrc' files as fennel filetype (Wu Zhenyu). + +Patch 9.1.0951 +Problem: filetype: jshell files are not recognized +Solution: Detect '*.jsh' files as java filetype (Konfekt). + +Patch 9.1.0952 +Problem: Vim9: missing type checking for any type assignment (Ernie Rael) +Solution: When assigning to a list item, if the type of the LHS item is + any, then use the list item type (Yegappan Lakshmanan). + +Patch 9.1.0953 +Problem: filetype: APKBUILD files not correctly detected +Solution: Detect 'APKBUILD' files as apkbuild filetype, + include a apkbuild syntax script (which basically + just sources the sh.vim syntax file) (Hugo Osvaldo Barrera). + +Patch 9.1.0954 +Problem: popupmenu.c can be improved +Solution: Slightly refactor the logic (glepnir). + +Patch 9.1.0955 +Problem: Vim9: vim9compile.c can be further improved +Solution: Refactor the compile_def_function (Yegappan Lakshmanan). + +Patch 9.1.0956 +Problem: completion may crash, completion highlight wrong with preview + window (after v9.1.0954) +Solution: Correctly calculate scroll offset, check for preview window + when adding extra highlighting (glepnir). + +Patch 9.1.0957 +Problem: MS-Windows: conversion warnings +Solution: Add explicit type casts (Yegappan Lakshmanan). + +Patch 9.1.0958 +Problem: filetype: supertux2 config files detected as lisp +Solution: Detect supertux2 config files as scheme instead (Wu, Zhenyu). + +Patch 9.1.0959 +Problem: Coverity complains about type conversion (after v9.1.0957) +Solution: Use size_t instead of int for file length (Yegappan Lakshmanan). + +Patch 9.1.0960 +Problem: filetype: hy history files are not recognized +Solution: Detect '*.hy', '.hy-history' files as hy filetype, + detect '.lips_repl_history' files are scheme filetype (Wu, Zhenyu). + +Patch 9.1.0961 +Problem: filetype: TI gel files are not recognized +Solution: Detect '*.gel' files as gel filetype, include get filetype and + syntax plugins (Wu, Zhenyu). + +Patch 9.1.0962 +Problem: filetype: bun.lock file is not recognized +Solution: Detect 'bun.lock' file as jsonc filetype (Anton Kastritskii). + +Patch 9.1.0963 +Problem: fuzzy-matching does not prefer full match (Maxim Kim) +Solution: Add additional score for a full match (glepnir). + +Patch 9.1.0964 +Problem: MS-Windows: sed error with MinGW +Solution: Use double quotes for sed, update compilation notes + (Andrey A Voropaev) + +Patch 9.1.0965 +Problem: filetype: sh filetype set when detecting the use of bash +Solution: When bash is detected, use 'bash' filetype instead (Luca Saccarola). + +Patch 9.1.0966 +Problem: Vim9: :enum command can be shortened +Solution: Prevent shortening of :enum command by adding the EX_WHOLE + flag to command definition (h-east). + +Patch 9.1.0967 +Problem: SpotBugs compiler can be further improved +Solution: Introduce event-driven primitives for SpotBugs (Aliaksei Budavei). + +Patch 9.1.0968 +Problem: tests: GetFileNameChecks() isn't fully sorted by filetype name +Solution: Re-sort the list. + +Patch 9.1.0969 +Problem: ghostty not using kitty protocol by default (00-kat) +Solution: Update keyprotocol option default and include ghostty. + +Patch 9.1.0970 +Problem: VMS: build errors on VMS architecture +Solution: Define cellsize struct, use C89 to initialize lval_root_S + struct (Zoltan Arpadffy) + +Patch 9.1.0971 +Problem: filetype: SLNX files are not recognized +Solution: Detect '*.slnx' files as xml filetype (Gustav Eikaas). + +Patch 9.1.0972 +Problem: filetype: TI linker map files are not recognized +Solution: Detect TI linker map files as lnkmap filetype (Wu, Zhenyu). + +Patch 9.1.0973 +Problem: too many strlen() calls in fileio.c +Solution: Refactor fileio.c and remove calls to STRLEN(), + check for out-of-memory condition in buf_check_timestamp() + (John Marriott). + +Patch 9.1.0974 +Problem: typo in change of (Christ van Willegen) +Solution: Add back the square brackets (John Marriott). + +Patch 9.1.0975 +Problem: Vim9: interpolated string expr not working in object methods + (Igbanam Ogbuluijah) +Solution: Check the evalarg argument (Yegappan Lakshmanan). + +Patch 9.1.0976 +Problem: Vim9: missing return statement with throw (atitcreate) +Solution: Treat a throw statement at the end of an if-else block as a + return statement (Yegappan Lakshmanan). + +Patch 9.1.0977 +Problem: filetype: msbuild filetypes are not recognized +Solution: Detect msbuild files as xml filetype (Gustav Eikaas). + +Patch 9.1.0978 +Problem: GUI tests sometimes fail when setting 'scroll' options +Solution: Decrease the 'scroll' and 'scrolljump' option value from 20 to + 15, in case the Gui window is not large enough to handle 20. + +Patch 9.1.0979 +Problem: VMS: type warning with $XDG_VIMRC_FILE (Zoltan Arpadffy) +Solution: Add explicit (char_u *) type cast to mch_getenv() call. + +Patch 9.1.0980 +Problem: no support for base64 en-/decoding functions in Vim Script + (networkhermit) +Solution: Add the base64_encode() and base64_decode() functions + (Yegappan Lakshmanan). + +Patch 9.1.0981 +Problem: tests: typo in test_filetype.vim +Solution: fix comment, update lnkmap syntax file and add DESCT keyword + (Wu, Zhenyu). + +Patch 9.1.0982 +Problem: TI linker files are not recognized +Solution: Inspect '*.cmd' files and detect TI linker files as 'lnk' filetype, + include a lnk ftplugin and syntax script (Wu, Zhenyu). + +Patch 9.1.0983 +Problem: not able to get the displayed items in complete_info() + (Evgeni Chasnovski) +Solution: Return the visible items via the "matches" key for + complete_info() (glepnir). + +Patch 9.1.0984 +Problem: exception handling can be improved +Solution: Add v:stacktrace and getstacktrace(). + +Patch 9.1.0985 +Problem: Vim9: some ex commands can be shortened +Solution: Disallow shortening of :abstract, :interface and :type (h-east). + +Patch 9.1.0986 +Problem: filetype: 'jj' filetype is a bit imprecise +Solution: rename 'jj' filetype to 'jjdescription' (Gregory Anders). + +Patch 9.1.0987 +Problem: filetype: cake files are not recognized +Solution: Detect '*.cake' files as cs filetype (Zoe Roux). + +Patch 9.1.0988 +Problem: Vim9: no error when using uninitialized var in new() + (lifepillar, Aliaksei Budavei) +Solution: Give an error if an uninitialized object variable is referenced + in new() (Yegappan Lakshmanan). + +Patch 9.1.0989 +Problem: Vim9: Whitespace after the final enum value causes a syntax + error +Solution: Fix parsing to allow whitespace after the final enum value. + (Doug Kearns) + +Patch 9.1.0990 +Problem: Inconsistent behavior when changing cmdheight by resizing the + topframe through wincmds and dragging laststatus. Changing + cmdheight by resizing the topframe does not trigger OptionSet. +Solution: Consolidate logic for changing the cmdheight, set the option + value to handle side-effects (Luuk van Baal). + +Patch 9.1.0991 +Problem: v:stacktrace has wrong type in Vim9 script. +Solution: Change the type to t_list_dict_any. Fix grammar in docs (zeertzjq). + +Patch 9.1.0992 +Problem: Vim9: double-free after v9.1.0988 (h-east) +Solution: Clear typval pointer, before setting the type + (Yegappan Lakshmanan) + +Patch 9.1.0993 +Problem: Although Patch 9.1.0990 fixed a real problem/inconsistency, + it also introduced new behavior that may break BWC and/or be + unexpected. Before 9.1.0990, window commands could make the + topframe smaller (without changing 'cmdheight'; quirk that is + now fixed), but did not allow extending the topframe beyond + the 'cmdheight' set by the user. After 9.1.0990, the user can + reduce the 'cmdheight' below the value they set explicitly, + through window commands, which may lead to confusion. + (aftere v9.1.0990) +Solution: Store the value explicitly set by the user and clamp the + 'cmdheight' when resizing the topframe. This also applies to + dragging laststatus, which in contrast to window commands + _did_ allow reducing the 'cmdheight' to values below the one + set by the user. So with this Patch there is still new + behavior, but I think in a way that is less surprising. + While at it, also fix a Coverity warning, introduced in + v9.1.0990 (Luuk van Baal). + +Patch 9.1.0994 +Problem: Vim9: not able to use comment after opening curly brace + (lifepillar) +Solution: Allow to use comments after curly braces of an inner-block, + modify the logic to search for comment in a line, update Vim9 + tests to use specific class type instead of any + (Yegappan Lakshmanan). + +Patch 9.1.0995 +Problem: filetype: shaderslang files are not detected +Solution: Detect '*.slang' files as shaderslang filetype, + include a filetype and syntax script (mtvare6) + +Patch 9.1.0996 +Problem: ComplMatchIns may highlight wrong text +Solution: Don't highlight in case of fuzzy match, + skip-highlight when not inserting anything (glepnir). + +Patch 9.1.0997 +Problem: too many strlen() calls in drawscreen.c +Solution: Refactor drawscreen.c and remove calls to strlen(), + make get_keymap_str() (in screen.c) return string length + instead of TRUE/FALSE (John Marriott). + +Patch 9.1.0998 +Problem: filetype: TI assembly files are not recognized +Solution: Inspect '*.sa' and assembly files and detect TI assembly + files, include filetype plugin and syntax script for TI + assembly files (Wu, Zhenyu). + +Patch 9.1.0999 +Problem: leaking finished exception (after v9.1.0984) +Solution: Use finish_exception to clean up caught exceptions + (Yee Cheng Chin) + +Patch 9.1.1000 +Problem: tests: ruby tests fail with Ruby 3.4 +Solution: Adjust expected output for Ruby 3.4 (Yee Cheng Chin) + +Patch 9.1.1001 +Problem: ComplMatchIns highlight hard to read on light background + (after v9.1.0996) +Solution: Define the highlighting group cleared, it should be configured in + colorschemes separately (glepnir). + +Patch 9.1.1002 +Problem: Vim9: unknown function error with interface declaring a + function variable (lifepillar) +Solution: Use correct instruction for getting interface member variables + (Yegappan Lakshmanan) + +Patch 9.1.1003 +Problem: [security]: heap-buffer-overflow with visual mode when + using :all, causing Vim trying to access beyond end-of-line + (gandalf) +Solution: Reset visual mode on :all, validate position in gchar_pos() + and charwise_block_prep(). + +Patch 9.1.1004 +Problem: tests: a few termdebug tests are flaky; test_termdebug_basic() + and test_termdebug_config_types() may fail if there is too + much load +Solution: Set g:test_is_flaky. + +Patch 9.1.1005 +Problem: completion text is highlighted even with no pattern found +Solution: use ins_compl_leader_len() instead of checking + compl_leader.length (glepnir). + +Patch 9.1.1006 +Problem: PmenuMatch completion highlight can be combined +Solution: Combine highlight groups PmenuMatch with Pmenu and + PmenuMatchSel with PmenuSel (glepnir). + +Patch 9.1.1007 +Problem: filetype: various ignore are not recognized +Solution: Detect rg/docker/npm/vvsce ignore files as 'gitgnore' filetype + (Wu, Zhenyu). + +Patch 9.1.1008 +Problem: tests: test for Patch 9.1.1006 doesn't fail without the patch + (after v9.1.1006) +Solution: Add ctermbg=NONE to the highlight groups (zeertzjq). + +Patch 9.1.1009 +Problem: diff feature can be improved +Solution: Include the linematch diff alignment algorithm (Jonathon). + +Patch 9.1.1010 +Problem: filetype: VisualCode setting file not recognized +Solution: Detect json files in VSCode config directory as jsonc filetype + (Konfekt). + +Patch 9.1.1011 +Problem: Popup menu internal error with some abbr in completion item. +Solution: Don't compute attributes when there is no corresponding text. + Reduce indent in pum_redraw() while at it (zeertzjq). + +Patch 9.1.1012 +Problem: Vim9: class interface inheritance not correctly working +Solution: Make the class inherit the interfaces of the super class. + +Patch 9.1.1013 +Problem: Vim9: Regression caused by Patch v9.1.0646 +Solution: Translate the function name before invoking it in call() + (Yegappan Lakshmanan). + +Patch 9.1.1014 +Problem: Vim9: variable not found in transitive import +Solution: Allow nested import (Hirohito Higashi). + +Patch 9.1.1015 +Problem: Coverity complains about dereferencing NULL value +Solution: Check that cms2 is not null. + +Patch 9.1.1016 +Problem: Not possible to convert string2blob and blob2string +Solution: Add support for the blob2str() and str2blob() functions. + +Patch 9.1.1017 +Problem: Vim9: Patch 9.1.1013 causes a few problems +Solution: Translate the function name only when it is a string + (Yegappan Lakshmanan). + +Patch 9.1.1018 +Problem: v9.1.0743 causes regression with diff mode +Solution: Fix the regression with overlapping regions. + +Patch 9.1.1019 +Problem: filetype: fd ignore files are not recognized +Solution: Detect .fdignore files as gitignore filetype. + +Patch 9.1.1020 +Problem: no way to get current selected item in a async context +Solution: Add completed flag to show the entries of currently selected + index item (@glepnir). + +Patch 9.1.1021 +Problem: string might be used without a trailing NUL (after v9.1.0997) +Solution: Make sure that the buffer is NUL terminated. + +Patch 9.1.1022 +Problem: linematch option value not completed (after v9.1.1009) +Solution: Update diffoption completion values. + +Patch 9.1.1023 +Problem: Coverity complains about dereferencing NULL pointer +Solution: Verify curdiff is not null before dereferencing it. + +Patch 9.1.1024 +Problem: blob2str/str2blob() do not support list of strings (after v9.1.1016) +Solution: Add support for using a list of strings (Yegappan Lakshmanan). + +Patch 9.1.1025 +Problem: wrong return type of blob2str() +Solution: Update return to list of string (Yegappan Lakshmanan). + +Patch 9.1.1026 +Problem: filetype: swc configuration files are not recognized +Solution: Detect .swcrc files as json filetype (Marces Engel). + +Patch 9.1.1027 +Problem: no sanitize check when running linematch +Solution: Add sanitize check before applying the linematch algorithm, + similar to diff_find_change() (Jonathon). + +Patch 9.1.1028 +Problem: too many strlen() calls in screen.c +Solution: Refactor screen.c and remove calls to strlen(), + verify that leadmultispace != NULL (John Marriott). + +Patch 9.1.1029 +Problem: the installer can be improved +Solution: Update the installer with the correct README and LICENSE + files, improve the documentation, add a Makefile for the + installer, update the Makefiles (RestorerZ). + +Patch 9.1.1030 +Problem: filetype: setting bash filetype is backwards incompatible +Solution: Revert Patch v9.1.0965, detect bash scripts again as sh filetype. + +Patch 9.1.1031 +Problem: Coverity complains about insecure data handling (v9.1.1024) +Solution: Use int consistently to access the blob index (Yegappan Lakshmanan). + +Patch 9.1.1032 +Problem: link error when FEAT_SPELL not defined (after v9.1.1016, + John Marriott) +Solution: Adjust ifdefs (Yegappan Lakshmanan). + +Patch 9.1.1033 +Problem: tests: shaderslang was removed from test_filetype erroneously + (Christian Clason, after v9.1.1030) +Solution: Restore the test. + +Patch 9.1.1033 +Problem: Vim9: compiling abstract method fails without return + (Aliaksei Budavei) +Solution: Don't require return for an abstract method (Ernie Rael). + +Patch 9.1.1035 +Problem: Vim9: memory leak with blob2str() +Solution: Free converted_str (Yegappan Lakshmanan). + +Patch 9.1.1036 +Problem: make install fails when using shadowdir (after v9.1.1029). +Solution: Also link in README.txt and LICENSE file. + +Patch 9.1.1037 +Problem: Vim9: confusing error when using abstract method via super +Solution: Display an error when an abstract method is invoked using + super (Ernie Rael). + +Patch 9.1.1038 +Problem: tests: test_channel.py fails with IPv6 (eds-collabora) +Solution: Use 127.0.0.1 instead of localhost. + +Patch 9.1.1039 +Problem: Vim9: comments are outdated +Solution: Update comments, and include an enum example in the help + (Yegappan Lakshmanan). + +Patch 9.1.1040 +Problem: Vim9: imported type cannot be used as func return type + (Dayvid Albuquerque) +Solution: Temporarily reset the is_export flag (Yegappan Lakshmanan). + +Patch 9.1.1041 +Problem: Vim9: out-of-bound access when echoing an enum +Solution: Add NUL to growarray, check that ufunc is non-null before accessing + it to make Coverity happy (Yegappan Lakshmanan). + +Patch 9.1.1042 +Problem: filetype: just files are not recognized +Solution: Adjust filetype detection pattern, detect just shebang line, + include just ftplugin, indent and syntax plugin (Peter Benjamin). + +Patch 9.1.1043 +Problem: [security]: segfault in win_line() (fizz-is-on-the-way) +Solution: Check that ScreenLines is not NULL. + +Patch 9.1.1044 +Problem: Vim9: Patch 9.1.1014 causes regressions +Solution: Revert it for now. + +Patch 9.1.1045 +Problem: filetype: N-Tripels and TriG files are not recognized +Solution: Detect '*.nt' files as ntriples filetype and '*.trig' files + as trig filetype (Gordian Dziwis) + +Patch 9.1.1046 +Problem: fuzzymatching doesn't prefer matching camelcase (Tomasz N). +Solution: Add extra score when case matches (glepnir). + +Patch 9.1.1047 +Problem: Makefiles uses non-portable syntax (simo-zz, after v9.1.1029) +Solution: Revert auto-generation of MAJOR/MINOR variables. + +Patch 9.1.1048 +Problem: Crash after scrolling and pasting in silent Ex mode + (fizz-is-on-the-way) +Solution: Don't move cursor to line 0 when scrolling (zeertzjq). + +Patch 9.1.1049 +Problem: Insert-completed items are always sorted, although the LSP + spec[1] standard defines sortText in the returned + completionitem list. This means that the server has sorted the + results. When fuzzy is enabled, this will break the server's + sorting results. +Solution: Disable sorting of candidates when "nosort" is set in + 'completeopt' + +Patch 9.1.1050 +Problem: Too many strlen() calls in os_unix.c +Solution: Refactor os_unix.c and remove calls to strlen() (John Marriott). + +Patch 9.1.1051 +Problem: tests: no support for env variables when running Vim in terminal +Solution: support the "env" argument in RunVimInTerminal(), close swapfiles + properly in test_termcodes, use CheckFeature in test_termencoding + +Patch 9.1.1052 +Problem: tests: off-by-one error in CheckCWD in test_debugger.vim +Solution: Fix off-by-one in CheckCWD leading to local tests failure + (Yee Cheng Chin) + +Patch 9.1.1053 +Problem: "nosort" enables fuzzy filtering even if "fuzzy" isn't in + 'completeopt' (after v9.1.1049) +Solution: Only enable fuzzy filtering when "fuzzy" is in 'completeopt' + (zeertzjq). + +Patch 9.1.1054 +Problem: Vim doesn't work well with TERM=xterm-direct (Andrea Pappacoda). +Solution: Detect if a terminal supports true-colors and enable termguicolors + +Patch 9.1.1055 +Problem: make install fails because of a missing dependency +Solution: Add explicit dependencies for tutor/{en,it} (Sergei Trofimovich). + +Patch 9.1.1056 +Problem: Vim doesn't highlight to be inserted text when completing +Solution: Add support for the "preinsert" 'completeopt' value (glepnir). + +Patch 9.1.1057 +Problem: Superfluous cleanup steps in test_ins_complete.vim. +Solution: Remove unnecessary :bw! and :autocmd! commands. + Also remove unnecessary STRLEN() in insexpand.c (zeertzjq). + +Patch 9.1.1058 +Problem: translation(sr): Missing Serbian translation for the tutor +Solution: Include new Serbian translation for the new tutor, + include translation for chapter 2 of the traditional tutor, + update the Makefiles for installing the runtime files (Ivan Pešić). + +Patch 9.1.1059 +Problem: completion: input text deleted with preinsert when adding leader +Solution: Remove compl_length and check the ptr for being equal + to pattern when preinsert is active (glepnir). + +Patch 9.1.1060 +Problem: Vim always enables 'termguicolors' in a terminal, even + when not wanted (after v9.1.1054). +Solution: Respect `:set notermguicolors` in vimrc file. + +Patch 9.1.1061 +Problem: tests: test_glvs fails when unarchiver not available + (Brian L. Matthews) +Solution: Check if an unarchiver is available, skip the test otherwise. + +Patch 9.1.1062 +Problem: terminal: E315 when dragging the terminal with the mouse + (user202729) +Solution: Call update_topline() and validate_cursor() when clicking + on the status line with the mouse (Hirohito Higashi). + +Patch 9.1.1063 +Problem: too many strlen() calls in userfunc.c +Solution: Refactor userfunc.c and remove calls to strlen(), + drop set_ufunc_name() and roll it into alloc_ufunc(), + check for out-of-memory condition in trans_function_name_ext() + (John Marriott). + +Patch 9.1.1064 +Problem: not possible to use plural forms with gettext() +Solution: Implement ngettext() Vim script function (Christ van Willegen). + +Patch 9.1.1065 +Problem: no digraph for "Approaches the limit" +Solution: Add the digraph using .= (Hans Ginzel). + +Patch 9.1.1066 +Problem: Heap-use-after-free and stack-use-after-scope with :14verbose + when using :return and :try (after 9.1.1063). +Solution: Move back the vim_free(tofree) and the scope of numbuf[] (zeertzjq). + +Patch 9.1.1067 +Problem: tests: Test_termwinscroll_topline2 fails on MacOS (after v9.1.1062) +Solution: Reduce termwinscroll further, increase term_wait time. + +Patch 9.1.1068 +Problem: getchar() can't distinguish between C-I and Tab. +Solution: Add {opts} to pass extra flags to getchar() and getcharstr(), + with "number" and "simplify" keys. + +Patch 9.1.1069 +Problem: preinsert text completions not deleted with / + (ddad431, after v9.1.1059) +Solution: Handle or specifically and clear the completion + (glepnir). + +Patch 9.1.1070 +Problem: Cannot control cursor positioning of getchar(). +Solution: Add "cursor" flag to {opts}, with possible values "hide", + "keep" and "msg". + +Patch 9.1.1071 +Problem: Arguments of a function are missing after failing to redefine + it (after 8.2.2505), and heap-use-after-free with script-local + function (after 9.1.1063). +Solution: Don't clear arguments or free uf_name_exp when failing to + redefine an existing function (zeertzjq). + +Patch 9.1.1072 +Problem: 'diffopt' "linematch" cannot be used with {n} less than 10 + digits (after v9.1.1022) +Solution: Fix off-by-one error when checking for digit (zeertzjq). + +Patch 9.1.1073 +Problem: tests: test_compiler fails on Windows without Maven. +Solution: Add Xspotbugs directory to $PATH when mvn is not available + (zeertzjq). + +Patch 9.1.1074 +Problem: Strange error when heredoc marker starts with "trim". +Solution: Check for whitespace after "trim" or "eval" (zeertzjq). + +Patch 9.1.1075 +Problem: Vim9: length variable not used in compile_load() +Solution: Use len instead of re-calculating the length (Hirohito Higashi). + +Patch 9.1.1076 +Problem: vim_strnchr() is strange and unnecessary (after v9.1.1009) +Solution: Remove vim_strnchr() and use memchr() instead. Also remove a + comment referencing an #if that is no longer present. + +Patch 9.1.1077 +Problem: Syntax engine interpreted contains=TOP as matching nothing + inside included files, since :syn-include forces HL_CONTAINED + on for every included item. After 8.2.2761, interprets + contains=TOP as contains=@INCLUDED, which is also not correct + since it doesn't respect exclusions, and doesn't work if there + is no @INCLUDED cluster. +Solution: Revert Patch 8.2.2761, instead track groups that have had + HL_CONTAINED forced, and interpret contains=TOP and + contains=CONTAINED using this (Theodore Dubois). + +Patch 9.1.1078 +Problem: Terminal ansi colors off by one after tgc reset +Solution: Set the correct index for libvterm palette, revert parts in + libvterm/src/pen.c that deviated from upstream (Julio B) + +Patch 9.1.1079 +Problem: GUI late startup leads to uninitialized scrollbars +Solution: initialize scrollbars for all windows in all tabpages + (Yee Cheng Chin). + +Patch 9.1.1080 +Problem: filetype: Mill files are not recognized +Solution: Detect '*.mill' files as scala filetype. + +Patch 9.1.1081 +Problem: has('bsd') is true for GNU/Hurd +Solution: Exclude GNU/Hurd from BSD feature flag (Zhaoming Luo). + +Patch 9.1.1082 +Problem: unexpected DCS responses may cause out of bounds reads + (after v9.1.1054) +Solution: Check that the parsed value is '=' as expected (Julio B). + +Patch 9.1.1083 +Problem: setreg() doesn't correctly handle mbyte chars in blockwise mode +Solution: Use mb_ptr2len_len function pointer (Yee Cheng Chin). + +Patch 9.1.1084 +Problem: Unable to persistently ignore events in a window and its buffers. +Solution: Add 'eventignorewin' option to ignore events in a window and buffer + (Luuk van Baal). + +Patch 9.1.1085 +Problem: filetype: cmmt files are not recognized +Solution: Detect '*.cmmt' as trace32 filetype (Christian Sax). + +Patch 9.1.1086 +Problem: completion doesn't work with multi lines (Łukasz Jan Niemier) +Solution: Handle linebreaks in completion code as expected (glepnir). + +Patch 9.1.1087 +Problem: Vim9: import with extends may crash +Solution: Check otv for being NULL before trying to access it + (Hirohito Higashi). + +Patch 9.1.1088 +Problem: tests: plugin tests are named inconsistently +Solution: Group them under a common 'plugin' prefix. + +Patch 9.1.1089 +Problem: tests: No check when tests are run under Github actions +Solution: Add the CheckGithubActions check command and skip test if needed. + +Patch 9.1.1090 +Problem: tests: test_terminwscroll_topline2 unreliable +Solution: Instead of using term_wait() with a specific time, use + terminal-api and to wait until the terminal is finished + (Yee Cheng Chin). + +Patch 9.1.1091 +Problem: tests: timeout might be a bit too small +Solution: Increase the test timeout from 30 to 45 seconds + +Patch 9.1.1092 +Problem: tests: fix expected return code for python 3.13 on Windows +Solution: Check for return code 1 or 123 on Windows. + +Patch 9.1.1093 +Problem: tests: output of test Test_terminal_eof_arg_win32_ctrl_z depends on + python version. +Solution: Check for the expected output in both, the second last line + and last line. + +Patch 9.1.1094 +Problem: Vim9: problem finding implemented method for abstract method + in type hierarchy (Aliaksei Budavei) +Solution: When checking for abstract methods in an extended class, check + whether an abstract method is implemented in one of the parent + classes (Yegappan Lakshmanan). + +Patch 9.1.1095 +Problem: tests: matchparen plugin test wrongly named (zeertzjq) +Solution: Rename test_matchparen to test_plugin_matchparen + to be consistent with the other plugin tests. + +Patch 9.1.1096 +Problem: if_perl: Perl 5.38 adds new symbols causing link failure +Solution: add stub symbols (Drew Vogel). + +Patch 9.1.1097 +Problem: --log with non-existent path causes a crash (Ekkosun) +Solution: Split initialization phase and init the execution stack + earlier (Hirohito Higashi) + +Patch 9.1.1098 +Problem: Leaking memory with completing multi lines (after v9.1.1086) +Solution: Free allocated memory (glepnir). + +Patch 9.1.1099 +Problem: Vim9: import with extends may crash, v9.1.1087 wasn't the + correct way to fix it). +Solution: When using an import class, Check for a valid class member + variable at compile time (Yegappan Lakshmanan). + +Patch 9.1.1100 +Problem: tests: Test_log_nonexistent only works on Linux + (after v9.1.1097) +Solution: Add CheckUnix condition. + +Patch 9.1.1101 +Problem: insexpand.c hard to read +Solution: Refactor slightly to make it better readable (glepnir). + +Patch 9.1.1102 +Problem: tests: Test_WinScrolled_Resized_eiw() uses wrong filename + (Luuk van Baal, after v9.1.1084) +Solution: Rename the filename to something more unique. + +Patch 9.1.1103 +Problem: if_perl: still some compile errors with Perl 5.38 +Solution: Copy declaration of PL_memory_wrap from Perl header (Drew Vogel). + +Patch 9.1.1104 +Problem: CI: uses Ubuntu 22.04 runners +Solution: Switch to Ubuntu 24.04 runners, make a few adjustments for + different $TMPDIR (Drew Vogel). + +Patch 9.1.1105 +Problem: Vim9: no support for protected new() method +Solution: Support the protected "_new()" object method (Yegappan Lakshmanan). + +Patch 9.1.1106 +Problem: tests: Test_log_nonexistent() causes asan failure (Hirohito Higashi) +Solution: Don't run vim using system(), but run Vim in a terminal. + +Patch 9.1.1107 +Problem: Cannot loop through completion menu with fuzzy and nosort in + 'completeopt' (Tomasz N) +Solution: Reset cur to zero and update compl_shown_match when + 'completeopt' contains "nosort" but not "noselect" (glepnir). + +Patch 9.1.1108 +Problem: 'smoothscroll' gets stuck with 'listchars' "eol". +Solution: Count size of 'listchars' "eol" in line size when scrolling + (zeertzjq). + +Patch 9.1.1109 +Problem: cmdexpand.c hard to read +Solution: Refactor the file slightly (glepnir). + +Patch 9.1.1110 +Problem: Vim tests are slow and flaky at the same time due to reliance + on timeouts which are unreliable. +Solution: Improve Vim test performance and reduce flakiness + (Yee Cheng Chin) + +Patch 9.1.1111 +Problem: Vim9: variable not found in transitive import (lifepillar) +Solution: Fix import and class extends (Hirohito Higashi). + +Patch 9.1.1112 +Problem: Inconsistencies in get_next_or_prev_match() (after 9.1.1109). +Solution: Change "file" to "entry" or "match" in comments. Use the same + order of branches for PAGEUP and PAGEDOWN (zeertzjq). + +Patch 9.1.1113 +Problem: tests: Test_terminal_builtin_without_gui waits 2 seconds +Solution: Add --not-a-term to remove the annoying 2s delay in error + message when Vim detects that stdio are not from a terminal + (Yee Cheng Chin). + +Patch 9.1.1114 +Problem: Enabling termguicolors automatically confuses users. Since + querying the terminal for the RGB flag happens asynchronously, + enabling termguicolors is noticeable by users as the highlighting + changes and is therefore unexpected (after v9.1.1054). +Solution: Comment out that part for now. We may need another way to enable + this in the future. + +Patch 9.1.1115 +Problem: [security]: use-after-free in str_to_reg() (fizz-is-on-the-way) +Solution: When redirecting the :display command, check that one + does not output to the register being displayed + +Patch 9.1.1116 +Problem: Vim9: super not supported in lambda expressions (Aliaksei Budavei) +Solution: Support using the super keyword in a closure in an instance + method (Yegappan Lakshmanan). + +Patch 9.1.1117 +Problem: there are a few minor style issues +Solution: Fix the issues (Hirohito Higashi). + +Patch 9.1.1118 +Problem: tests: test_termcodes fails (after: v9.1.1114) +Solution: Adjust the test for the expected termguicolors value. + +Patch 9.1.1119 +Problem: Vim9: Not able to use an autoloaded class from another + autoloaded script (Elliot) +Solution: Make it work (Yegappan Lakshmanan). + +Patch 9.1.1120 +Problem: tests: Test_registers fails (T.J. Townsend, after v9.1.1115). +Solution: Require clipboard feature + +Patch 9.1.1121 +Problem: Enter does not insert newline with "noselect" when the pum is + visible (lifepillar) +Solution: When Enter is pressed and no complete-item is selected, + ins_compl_prep returns false, and the edit function continues + processing Enter to insert a new line (glepnir). + +Patch 9.1.1122 +Problem: too many strlen() calls in findfile.c +Solution: Refactor findfile.c and remove calls to strlen() (John Marriott). + +Patch 9.1.1123 +Problem: Highlight groups PopupSelected/PopupNotification/ + MessageWindow are supposed to fall back to default highlight + groups if they are not defined. However, once a colorscheme + has defined them, switching to another colorscheme that + doesn't do so will leave behind a cleared colorscheme, which + causes the fallback to fail. +Solution: Set up default links to the relevant fallback highlight + groups, which makes sure a `:hi clear` command will reset the + state properly (Yee Cheng Chin). + +Patch 9.1.1124 +Problem: No test for 'listchars' "precedes" with double-width char. +Solution: Add a test and fix a typo in code (zeertzjq). + +Patch 9.1.1125 +Problem: Cannot loop through pum menu with multiline items with + fuzzy and noselect in 'completeopt' (Tomasz N) +Solution: Remove unnecessary compl_no_select condition (glepnir). + +Patch 9.1.1126 +Problem: Patch 9.1.1121 used a wrong way to handle enter +Solution: Compl_enter_selects also needs to consider the selected item + in ins_compl_new_leader() (glepnir). + +Patch 9.1.1127 +Problem: when 'completeopt' is set to preinsert the preinserted text is + not cleared when adding new leader (Yee Cheng Chin) +Solution: Add a condition to delete preinsert text in edit function + (glepnir). + +Patch 9.1.1128 +Problem: Patch 9.1.1119 caused a regression with imports (girishji). +Solution: Revert the script ID change for the class script variable for + now (Yegappan Lakshmanan). + +Patch 9.1.1129 +Problem: missing out-of-memory test in buf_write() +Solution: Check that the returned allocated buffer is not NULL + (John Marriott). + +Patch 9.1.1130 +Problem: 'listchars' "precedes" is not drawn on Tabs. +Solution: Only draw 'listchars' "precedes" when not skipping over cells + (zeertzjq). + +Patch 9.1.1131 +Problem: Potential out-of-memory issue in search.c +Solution: Improve situation and refactor search.c slightly (John Marriott). + +Patch 9.1.1132 +Problem: Mark positions wrong after triggering multiline completion. +Solution: Call deleted_lines_mark() after deleting lines (zeertzjq). + +Patch 9.1.1133 +Problem: filetype: xkb files not recognized everywhere +Solution: Detect xkb files in more places (David Mandelberg). + +Patch 9.1.1134 +Problem: filetype: Guile init file not recognized +Solution: Detect '.guile' file as scheme filetype (David Mandelberg). + +Patch 9.1.1135 +Problem: 'suffixesadd' doesn't work with multiple items (after 9.1.1122). +Solution: Don't concat multiple suffixes together (zeertzjq). + +Patch 9.1.1136 +Problem: Match highlighting marks a buffer region to be redrawn as if + its buffer text was changed, unnecessarily invoking syntax code. +Solution: Set the `w_redraw_top/bot` variables instead of the b_mod_* ones + (Luuk van Baal). + +Patch 9.1.1137 +Problem: ins_str() is inefficient by calling STRLLEN() +Solution: Refactor ins_str() to take a length argument and let all callers + provide the correct length when calling ins_str() (John Marriott). + +Patch 9.1.1138 +Problem: Existing cmdline completion for :highlight was barebone and + only completed the highlight group names. +Solution: Implement full completion for the highlight group arguments + such as guifg and cterm. If the user tries to complete + immediately after the '=' (e.g. `hi Normal guifg=`), the + completion will fill in the existing value, similar to how + cmdline completion for options work (Yee Cheng Chin). + +Patch 9.1.1139 +Problem: [fifo] is not displayed when editing a fifo (after v7.4.2189). +Solution: Stat the filename and detect the type correctly. + +Patch 9.1.1140 +Problem: filetype: m17ndb files are not detected +Solution: Detect m17ndb files as m17ndb filetype, include filetype, syntax and + indent files for the new filetype (David Mandelberg). + +Patch 9.1.1141 +Problem: Misplaced comment in readfile() (after v9.1.1139). +Solution: Move the comment above S_ISDIR() (zeertzjq). + +Patch 9.1.1142 +Problem: tests: test_startup fails if $HOME/$XDG_CONFIG_HOME is defined +Solution: Define $HOME and $XDG_CONFIG_HOME to some non-existing + directory. + +Patch 9.1.1143 +Problem: illegal memory access when putting a register +Solution: Make sure cursor column doesn't become negative. + +Patch 9.1.1144 +Problem: no way to create raw strings from a blob +Solution: Support the "encoding": "none" option to create raw strings (which + may be invalid) (Bakudankun). + +Patch 9.1.1145 +Problem: When expanding omni completion items with newlines (e.g. + `then\n\t\nend`), the end statement gets wrong indentation. +Solution: Add OPENLINE_FORCE_INDENT flag to make open_line() use + second_line_indent directly (glepnir). + +Patch 9.1.1146 +Problem: Vim9: wrong context being used when evaluating class member + (lifepillar, Ernie Rael) +Solution: Use the correct script context when evaluating a class member + init expression(Yegappan Lakshmanan). + +Patch 9.1.1147 +Problem: preview-window does not scroll correctly +Solution: Init firstline = 0 for a preview window (Girish Palya). + +Patch 9.1.1148 +Problem: Vim9: finding imported scripts can be further improved + (after v9.1.1146) +Solution: Eliminate extra find_imported() call (Hirohito Higashi). + +Patch 9.1.1149 +Problem: Unix Makefile does not support Brazilian lang for the installer. +Solution: Add support for language code pt_br (RestorerZ) + +Patch 9.1.1150 +Problem: :highlight auto-complettion has a minor bug where an existing + highlight group with a cterm color being unset would result in + it being auto-completed to -1 in cmdline which is invalid. +Solution: Correctly check for whether an int value is set to non-zero + before retrieving the existing value for auto-complete. Also + do this for attr/string values as they previously worked only + by accident (Yee Cheng Chin). + +Patch 9.1.1151 +Problem: too many strlen() calls in getchar.c +Solution: Store last inserted and recorded lengths, add functions to retrieve + those and use those functions (John Marriott). + +Patch 9.1.1152 +Problem: Patch v9.1.1151 causes problems +Solution: Partially revert it (John Marriott). + +Patch 9.1.1153 +Problem: build error on Haiku +Solution: Define XDG_RUNTIME_PATH variables (Begasus). + +Patch 9.1.1154 +Problem: Vim9: not able to use autoload class across scripts +Solution: Make it work, re-enable the test (Yegappan Lakshmanan). + +Patch 9.1.1155 +Problem: Mode message not cleared after :silent message (after 9.0.1634). +Solution: Don't reset mode_displayed when the message is empty (zeertzjq). + +Patch 9.1.1156 +Problem: No test for what Patch 9.1.1152 fixes. +Solution: Add a test (zeertzjq). + +Patch 9.1.1157 +Problem: command completion wrong for input() (Cdrman Fu) +Solution: Set commandline completion context explicitly (Jim Zhou). + +Patch 9.1.1158 +Problem: :verbose set has wrong file name with :compiler! +Solution: Add -keepscript (zeertzjq). + +Patch 9.1.1159 +Problem: $MYVIMDIR may not always be set (after 9.1.0718) (sandwm) +Solution: Always set $MYVIMDIR to first item in runtimepath + (except when using --clean), update it when changing &rtp. + +Patch 9.1.1160 +Problem: The 'preinsert' feature requires Ctrl-Y to confirm insertion, + but Ctrl-Y only works when the popup menu (pum) is displayed. +Solution: Modify ins_compl_has_preinsert() to check for both 'menu' and + 'menuone' flags when 'preinsert' is set. Update documentation + to clarify this requirement. This avoids adding complex + conditional behaviors (glepnir). + +Patch 9.1.1161 +Problem: preinsert requires bot "menu" and "menuone" to be set, + but "menu" is redundant (after v9.1.1160) +Solution: Preinsert only requires menuone (glepnir). + +Patch 9.1.1162 +Problem: When an info popup spans into the cmdline area and ESC is + pressed, some content remains visible on screen (yu3s). +Solution: Add popup_overlays_cmdline() check in screen_fill() to prevent + prematurely clearing the clear_cmdline flag (glepnir). + +Patch 9.1.1163 +Problem: $MYVIMDIR is set too late and not available while sourcing + runtime files (Maxim Kim, after v9.1.1159). +Solution: Also set it when $MYVIMRC file is found. + +Patch 9.1.1164 +Problem: editing a special crafted tar file allows code execution (RyotaK) +Solution: Escape the filename before feeding it to the `:read` command + +Patch 9.1.1165 +Problem: Vim's diff block merging algorithm when doing a multi-file diff + is buggy when two different diff hunks overlap a single + existing diff block (after v9.1.0743) +Solution: Fix a couple bugs in this logic (Yee Cheng Chin). + +Patch 9.1.1166 +Problem: command-line auto-completion hard with wildmenu +Solution: Implement "noselect" wildoption value (Girish Palya) + +Patch 9.1.1167 +Problem: mark '] wrong after copying text object (ubaldot) +Solution: Adjust position of '] for non-linewise, exclusive motions (Jim Zhou) + +Patch 9.1.1168 +Problem: wrong flags passed down to nextwild() (zeertzjq, after v9.1.1166) +Solution: Only pass options flags (Girish Palya) + +Patch 9.1.1169 +Problem: using global variable for get_insert()/get_lambda_name() + (after v9.1.1151) +Solution: Let the functions return a string_T object instead (Yee Cheng Chin). + +Patch 9.1.1170 +Problem: wildmenu highlighting in popup can be improved +Solution: Check if the completion items contain submatches of the + entered text (Girish Palya). + +Patch 9.1.1171 +Problem: tests: wrong arguments passed to assert_equal() (after v9.1.1167). +Solution: Swap arguments in the assert_equal() call (zeertzjq). + +Patch 9.1.1172 +Problem: heap-buffer-overflow with 'nostartofline' and Ex command in tag + file. +Solution: Set cursor column when moving cursor to line 1 (zeertzjq). + +Patch 9.1.1173 +Problem: filetype: ABNF files are not detected +Solution: Detect '.abnf' file as abnf filetype and + include an abnf syntax plugin (A4-Tacks). + +Patch 9.1.1174 +Problem: tests: when the file 'TestCommand?Test' exists, + 'Test_complete_cmdline()' will fail when writing the file. And + there's no related cleaning operation for this kind of file + before the test run. +Solution: modify `write` to `write!` to override (Jim Zhou). + +Patch 9.1.1175 +Problem: inconsistent behaviour with exclusive selection and motion + commands (aidancz) +Solution: Adjust cursor position when selection is exclusive (Jim Zhou). + +Patch 9.1.1176 +Problem: wrong indentation of lastline when expanding multiple lines +Solution: Check OPENLINE_FORCE_INDENT flag in open_line() (glepnir). + +Patch 9.1.1177 +Problem: filetype: tera files not detected +Solution: Detect '*.tera' files as tera filetype, + include a simple filetype plugin (MuntasirSZN). + +Patch 9.1.1178 +Problem: not possible to generate completion candidates using fuzzy + matching +Solution: Add the 'completefuzzycollect' option for (some) ins-completion + modes (glepnir). + +Patch 9.1.1179 +Problem: too many strlen() calls in misc2.c +Solution: Refactor misc2.c and use bsearch() instead of a linear search + to find matches in the key_names_table array (John Marriott). + +Patch 9.1.1180 +Problem: The meaning of depends on unspecified behavior + (after 9.1.1179). +Solution: Return TAB in case bsearch() finds K_TAB. Rename alt_name to + pref_name as that's closer to it meaning (zeertzjq). + +Patch 9.1.1181 +Problem: Unnecessary STRLEN() calls in insexpand.c (after 9.1.1178). +Solution: Use the already available length (zeertzjq). + +Patch 9.1.1182 +Problem: No cmdline completion for the 'completefuzzycollect' option + (after v9.1.1178) +Solution: Add cmdline completion for the 'completefuzzycollect' option, + improve its description in optwin.vim (zeertzjq). + +Patch 9.1.1083 +Problem: "above" virtual text breaks cursorlineopt=number. +Solution: Take "above" virtual text into account when applying + CursorLineNr highlight. + +Patch 9.1.1184 +Problem: Unnecessary use of vim_tolower() in vim_strnicmp_asc(). +Solution: Use TOLOWER_ASC() instead (zeertzjq). + +Patch 9.1.1185 +Problem: endless loop with completefuzzycollect and no match found +Solution: Move pointer to line end and break loop. + +Patch 9.1.1186 +Problem: filetype: help files in git repos are not detected +Solution: Detect */doc/*.txt files as help if they end with a help + modeline, even if 'modeline' is off + +Patch 9.1.1187 +Problem: matchparen plugin wrong highlights shell case statement + (Swudu Susuwu) +Solution: Return early, if we are in a shSnglCase syntax element + +Patch 9.1.1188 +Problem: runtime(tera): tera support can be improved +Solution: Update tera filetype plugin, include a tera syntax script + include tera syntax tests, update the filetype test, + update makemenu and synmenu vim scripts (MuntasirSZN). + +Patch 9.1.1189 +Problem: if_python: build error due to incompatible pointer types +Solution: Cast pointer to PyObject* (oreo639). + +Patch 9.1.1190 +Problem: C indentation does not detect multibyte labels +Solution: Correctly skip over multibyte characters (Anttoni Erkkilä). + +Patch 9.1.1191 +Problem: Test for Patch 9.1.1186 doesn't fail without the patch. +Solution: Set 'nomodeline' in the test (zeertzjq). + +Patch 9.1.1192 +Problem: Vim crashes with term response debug logging enabled and + running in a non-writeable directory +Solution: Use ch_log() instead of custom termresponse logging function + (Hirohito Higashi) + +Patch 9.1.1193 +Problem: Unnecessary use of STRCAT() in au_event_disable(). STRCAT() + seeks to the end of new_ei, but here the end is already known. +Solution: Use STRCPY() and add p_ei_len to new_ei. Also fix a typo in a + comment. Add a test that 'eventignore' works in :argdo (zeertzjq). + +Patch 9.1.1194 +Problem: filetype: false positive help filetype detection +Solution: Only detect a file as help if modeline appears either at start + of line or is preceded by whitespace (zeertzjq). + +Patch 9.1.1195 +Problem: inside try-block: fn body executed when default arg is + undefined +Solution: When inside a try-block do not execute function body after an + error in evaluating a default argument expression (Shane Harper). + +Patch 9.1.1196 +Problem: filetype: config files for container tools are not recognized +Solution: Detect the ones that aren't detected yet as toml filetype + (David Mandelberg). + +Patch 9.1.1197 +Problem: process_next_cpt_value() uses wrong condition +Solution: Use cfc_has_mode() instead and remove redundant else if branch + (glepnir). + +Patch 9.1.1198 +Problem: [security]: potential data loss with zip.vim and special + crafted zip files (RyotaK) +Solution: Use glob '[-]' to protect filenames starting with '-'. + +Patch 9.1.1199 +Problem: Many X11/Wayland desktops support icon themes, and many themes + provide a gvim icon, but this icon is ignored for the window + itself because it is hardcoded in the source code. +Solution: Read the icon from the theme instead (Aurelien Gateau). + +Patch 9.1.1200 +Problem: Cmdline pum not cleared for input() completion. +Solution: Temporary reset RedrawingDisabled in cmdline_pum_cleanup(), + like what is done in wildmenu_cleanup() (zeertzjq). + +Patch 9.1.1201 +Problem: 'completefuzzycollect' does not handle dictionary correctly +Solution: Check for ctrl_x_mode_dictionary (glepnir). + +Patch 9.1.1202 +Problem: Missing TabClosedPre autocommand (zoumi) +Solution: Add the TabClosedPre autcommand (Jim Zhou). + +Patch 9.1.1203 +Problem: matchparen keeps cursor on case label in sh filetype + (@categorical, after 9.1.1187). +Solution: Use :defer so that cursor is always restored, remove checks + for older Vims, finish early if Vim does not support :defer + +Patch 9.1.1204 +Problem: MS-Windows: crash when passing long string to expand() with + 'wildignorecase'. +Solution: Use the same buflen as unix_expandpath() in dos_expandpath(). + Remove an unnecessary STRLEN() while at it (zeertzjq). + +Patch 9.1.1205 +Problem: completion: preinserted text not removed when closing pum +Solution: Delete preinsert text inside in ins_compl_stop() (glepnir). + +Patch 9.1.1206 +Problem: tests: test_filetype fails when a file is a directory + (Eisuke Kawashima) +Solution: When encountering a directory instead of a file, skip that + particular filetype test. + +Patch 9.1.1207 +Problem: MS-Windows: build warning in filepath.c (after v9.1.1204). +Solution: Add type cast (John Marriott). + +Patch 9.1.1208 +Problem: MS-Windows: not correctly restoring alternate screen on Win 10 + after ssh (Daniel Viberg) +Solution: Return a bit later in RestoreConsoleBuffer() (Christopher Plewright) + +Patch 9.1.1209 +Problem: colorcolumn not drawn after virtual text lines +Solution: Show colorcolumn on correct line with virtual text by adding + the size of p_extra to virtual column offset (Matthias). + +Patch 9.1.1210 +Problem: translation(ru): missing Russian translation for the new tutor +Solution: Include new Russian translation, update the Makefile for + installing the new translations (RestorerZ). + +Patch 9.1.1211 +Problem: TabClosedPre is triggered just before the tab is being freed, + which limited its functionality. +Solution: Trigger it a bit earlier and also on :tabclose and :tabonly + (Jim Zhou). + +Patch 9.1.1212 +Problem: filetype: logrotate'd pacmanlogs are not recognized +Solution: Also detect pacman.log* files as pacmanlog filetype, + remove BufNewFile autocmd (Eisuke Kawashima). + +Patch 9.1.1212 +Problem: too many strlen() calls in edit.c +Solution: Refactor edit.c and remove strlen() calls (John Marriott). + +Patch 9.1.1213 +Problem: cannot :put while keeping indent (Peter Aronoff) +Solution: Add the :iput ex command (64-bitman). + +Patch 9.1.1214 +Problem: When searching for "Cur", CamelCase matches like "lCursor" score + higher than exact prefix matches like Cursor, which is + counter-intuitive (Maxim Kim). +Solution: Add a 'camelcase' option to matchfuzzy() that lets users disable + CamelCase bonuses when needed, making prefix matches rank higher + (glepnir). + +Patch 9.1.1215 +Problem: Patch 9.1.1213 has some issues +Solution: Revert it for now + +Patch 9.1.1216 +Problem: Pasting the '.' register multiple times may work incorrectly + when the last insert starts with Ctrl-D and ends with '0' + (after 9.1.1212). +Solution: Restore the missing assignment (zeertzjq). + +Patch 9.1.1217 +Problem: tests: typos in test_matchfuzzy.vim (after 9.1.1214). +Solution: Fix the typos. Consistently put the function call on the + second line in assertions for camelcase (zeertzjq). + +Patch 9.1.1218 +Problem: missing out-of-memory check in filepath.c +Solution: Add check for NULL (John Marriott). + +Patch 9.1.1219 +Problem: Strange error with type for matchfuzzy() "camelcase". +Solution: Show the error "Invalid value for argument camelcase" instead + of "Invalid argument: camelcase" (zeertzjq). + +Patch 9.1.1220 +Problem: filetype: uv.lock file not recognized +Solution: detect uv.lock file as toml filetype (Acaibird). + +Patch 9.1.1221 +Problem: Wrong cursor position and '^' mark when leaving Insert mode + just after 'autoindent' and cursor on last char of line. +Solution: Don't move cursor to NUL when it wasn't moved to the left (zeertzjq) + +Patch 9.1.1222 +Problem: using wrong length for last inserted string + (Christ van Willegen, after v9.1.1212) +Solution: Use the correct length in get_last_insert_save(), make + get_last_insert() return a string_T (John Marriott). + +Patch 9.1.1223 +Problem: wrong translation for encoding failures because of using + literal "from" and "to" in the resulting error message (RestorerZ) +Solution: Use separate error messages for errors "from" and "to" + encoding errors. + +Patch 9.1.1224 +Problem: cannot :put while keeping indent (Peter Aronoff) +Solution: Add the :iput ex command (64-bitman). + +Patch 9.1.1225 +Problem: extra NULL check in VIM_CLEAR() +Solution: Remove the NULL check and rely on the NULL check in vim_free() + instead (Hirohito Higashi). + +Patch 9.1.1226 +Problem: "shellcmdline" completion doesn't work with input(). +Solution: Use set_context_for_wildcard_arg(). Fix indent in nextwild() + (zeertzjq). + +Patch 9.1.1227 +Problem: no tests for the comment package +Solution: Add some tests (Maxim Kim). + +Patch 9.1.1228 +Problem: The current_pos.col was incorrectly updated to the length of + the matching text. This will cause the next search to start + from the wrong position. +Solution: Current_pos has already been updated in search_str_in_line and + does not need to be changed (glepnir). + +Patch 9.1.1229 +Problem: the comment plugin can be improved +Solution: add comment text objects "ic" and "ac" (Maxim Kim). + +Patch 9.1.1230 +Problem: Ctrl-C closes popup windows that have a filter callback, + but does not close popups without a filter callback. +Solution: Modified popup_do_filter() to also close popups without + filter callback when Ctrl-C is pressed (glepnir). + +Patch 9.1.1231 +Problem: filetype: SPA (single page application) JSON files are not + recognized (used by pipewire and wireplumber) +Solution: Detect pipewire and wireplumber configuration files as spajson + filetype, include filetype, indent and syntax scripts for this + new filetype (David Mandelberg). + +Patch 9.1.1232 +Problem: Vim script is missing the tuple data type +Solution: Add support for the tuple data type (Yegappan Lakshmanan). + +Patch 9.1.1233 +Problem: Coverity warns about NULL pointer when triggering WinResized +Solution: Add OOM checks for windows_list like for scroll_dict. Remove + void casts that are unnecessary after 9.1.1084 (zeertzjq). + +Patch 9.1.1234 +Problem: Compile error when SIZE_MAX is not defined +Solution: Define SIZE_MAX (Zoltan Arpadffy). + +Patch 9.1.1235 +Problem: cproto files are outdated +Solution: regenerate proto files by running make proto (Yegappan Lakshmanan). + +Patch 9.1.1236 +Problem: tests: test_comments leaves swapfiles around +Solution: use ':bw!' instead of ':close!' + +Patch 9.1.1237 +Problem: Compile error with C89 compiler in term.c (Zoltan Arpadffy) +Solution: split out LOG_TR macro into 2 different macros. LOG_TR1 that + takes only a single argument and LOG_TRN that takes 2 + arguments. Remove the use of ##__VA_ARGS__ since the macro is + now always called with 2 arguments (Hirohito Higashi). + +Patch 9.1.1238 +Problem: With ':set splitkeep=screen', cursor did't restore column + correctly when splitting a window on a line longer than the + last line on the screen (after v9.1.0707) +Solution: Restore cursor column in `win_fix_scroll()` since it may be + changed in `getvcol()` after 396fd1ec2956 (phanium). + +Patch 9.1.1239 +Problem: if_python: no tuple data type support (after v9.1.1232) +Solution: Add support for using Vim tuple in the python interface + (Yegappan Lakshmanan). + +Patch 9.1.1240 +Problem: Regression with ic/ac text objects and comment plugin +Solution: Fix regression, update tests (Maxim Kim). + +Patch 9.1.1241 +Problem: wrong preprocessort indentation in term.c +Solution: update indentation (Hirohito Higashi). + +Patch 9.1.1242 +Problem: Crash when evaluating variable name (after v9.1.0870) +Solution: Calculate the strlen() directly instead of pointer + arithmetics, fix missing assignment to lp->ll_name_end in + get_lval() (zeertzjq). + +Patch 9.1.1243 +Problem: Diff mode's inline highlighting is lackluster. It only + performs a line-by-line comparison, and calculates a single + shortest range within a line that could encompass all the + changes. In lines with multiple changes, or those that span + multiple lines, this approach tends to end up highlighting + much more than necessary. +Solution: Implement new inline highlighting modes by doing per-character + or per-word diff within the diff block, and highlight only the + relevant parts, add "inline:simple" to the defaults (which is + the old behaviour) (Yee Cheng Chin) + +Patch 9.1.1244 +Problem: part of Patch v9.1.1242 was wrong +Solution: Revert part of the Patch. + +Patch 9.1.1245 +Problem: need some more tests for curly braces evaluation +Solution: Add a test for the regression introduced by Patch v9.1.1242 + (Yegappan Lakshmanan). + +Patch 9.1.1246 +Problem: coverity complains about some changes in v9.1.1243 +Solution: Remove duplicate code in diff_find_changed() (Yee Cheng Chin). + +Patch 9.1.1247 +Problem: fragile setup to get (preferred) keys from key_name_entry + (after v9.1.1179) +Solution: Refactor the code further, fix a bug with "pref_name" key + entry introduced in v9.1.1180 (Yee Cheng Chin) + +Patch 9.1.1248 +Problem: compile error when building without FEAT_QUICKFIX +Solution: Adjust ifdefs in popupwin.c, add CheckFeature quickfix + to a few tests (John Marriott, Hirohito Higashi). + +Patch 9.1.1249 +Problem: No test that 'listchars' "eol" doesn't affect "gM". +Solution: Add a test (zeertzjq). + +Patch 9.1.1250 +Problem: cannot set the maximum popup menu width (Lucas Mior) +Solution: add the new global option value 'pummaxwidth' (glepnir). + +Patch 9.1.1251 +Problem: if_python: build error with tuples and dynamic python + (after v9.1.1239) +Solution: Fix build error and test failures (Yee Cheng Cin). + +Patch 9.1.1252 +Problem: Typos in code and docs related to 'diffopt' "inline:". + (after v9.1.1243) +Solution: Fix typos and slightly improve the docs (zeertzjq). + +Patch 9.1.1253 +Problem: If win_close() is called with a window that has quickfix stack + attached to it, the corresponding quickfix buffer will be + closed and freed after the buffer was already closed. At that + time curwin->w_buffer points to NULL, which the CHECK_CURBUF + will catch and abort if ABORT_ON_ERROR is defined. +Solution: In wipe_qf_buffer() temporarily point curwin->w_buffer back to + curbuf, the window will be closed anyhow, so it shouldn't + matter that curbuf->b_nwindows isn't incremented. + +Patch 9.1.1254 +Problem: need more tests for the comment plugin +Solution: Add a tests for the [gb]:comment_first_col setting (Maxim Kim). + +Patch 9.1.1255 +Problem: missing test condition for 'pummaxwidth' setting, pummaxwidth + not effective when width is 32 and height is 10 (after v9.1.1250). +Solution: Add missing comparison condition in pum_width() (glepnir). + +Patch 9.1.1256 +Problem: if_python: duplicate tuple data entries (after v9.1.1239) +Solution: clean up duplicates (Yegappan Lakshmanan). + +Patch 9.1.1257 +Problem: Mixing vim_strsize() with mb_ptr2cells() in pum_redraw(). +Solution: Change vim_strsize() to mb_string2cells() (zeertzjq). + +Patch 9.1.1258 +Problem: regexp: max \U and \%U value is limited by INT_MAX but gives a + confusing error message +Solution: Give a better error message when the value reaches INT_MAX + +Patch 9.1.1259 +Problem: some issues with comment package and tailing spaces +Solution: Correctly capture trailing spaces with the ac/ic text object + (Maxim Kim). + +Patch 9.1.1260 +Problem: Hang when filtering buffer with NUL bytes (after 9.1.1050). +Solution: Don't subtract "written" from "lplen" repeatedly (zeertzjq). + +Patch 9.1.1261 +Problem: No test for 'pummaxwidth' non-truncated items (after v9.1.1250) +Solution: Add shorter items to Test_pum_maxwidth_multibyte() (zeertzjq). + +Patch 9.1.1262 +Problem: heap-buffer-overflow occurs with narrow 'pummaxwidth' value + (after v9.1.1250) +Solution: Test that st_end points after st pointer (Hirohito Higashi). + +Patch 9.1.1263 +Problem: string length wrong in get_last_inserted_save() (after v9.1.1222). +Solution: When removing trailing ESC, also decrease the string length + (Christ van Willegen). + +Patch 9.1.1264 +Problem: Vim9: error when comparing objects (lifepillar) +Solution: When comparing object types, compare their classes + (Yegappan Lakshmanan) + +Patch 9.1.1265 +Problem: tests: no tests for typing normal char during completion +Solution: Add a test verifying the default behaviour (see :h + popupmenu-completion) + +Patch 9.1.1266 +Problem: MS-Windows: type conversion warnings +Solution: Cast the variables (Yegappan Lakshmanan). + +Patch 9.1.1267 +Problem: Vim9: no support for type list/dict> +Solution: Add proper support for t_object_any (Yegappan Lakshmanan). + +Patch 9.1.1268 +Problem: filetype: dax files are not recognized +Solution: Detect "*.dax" as dax filetype, include dax filetype and + syntax plugin (Anarion Dunedain). + +Patch 9.1.1269 +Problem: compl_shown_match is updated when starting keyword completion + and does not include fuzzy matching. +Solution: Do not update compl_shown_match when starting keyword + completion, since it is the one already selected by the + keyword completion direction (glepnir). + +Patch 9.1.1270 +Problem: missing out-of-memory checks in buffer.c +Solution: Handle out-of-memory situations during allocation (John Marriott). + +Patch 9.1.1271 +Problem: filetype: Power Query files are not recognized +Solution: Detect '*.pq' as pq filetype, include pq syntax and filetype + plugin (Anarion Dunedain). + +Patch 9.1.1272 +Problem: completion: in keyword completion Ctrl_P cannot go back after + Ctrl_N +Solution: in find_compl_when_fuzzy() always return first match of array, after + Ctrl_P use compl_shown_match->cp_next instead of compl_first_match. + (glepnir) + +Patch 9.1.1273 +Problem: Coverity warns about using uninitialized value (after 9.1.1270). +Solution: Put an empty string in "buf" when allocation fails (zeertzjq). + +Patch 9.1.1274 +Problem: Vim9: no support for object as variable type +Solution: Add support for object (Yegappan Lakshmanan). + +Patch 9.1.1275 +Problem: MS-Windows: Not possible to pass additional flags to Make_mvc +Solution: Introduce $CI_FLAGS and use it to pass additional flags for + the Github CI in order to treat size conversion warnings + (C4267) as errors (Yegappan Lakshmanan). + +Patch 9.1.1276 +Problem: inline word diff treats multibyte chars as word char + (after 9.1.1243) +Solution: Treat all non-alphanumeric characters as non-word characters + (Yee Cheng Chin) + +Patch 9.1.1277 +Problem: tests: trailing comment char in test_popupwin +Solution: Remove crufty tail comment (Doug Kearns) + +Patch 9.1.1278 +Problem: Vim9: too long functions in vim9type.c +Solution: Refactor into separate functions (Yegappan Lakshmanan). + +Patch 9.1.1279 +Problem: Vim9: null_object and null_class are no reserved names +Solution: Add null_object and null_class as reserved names + (Yegappan Lakshmanan). + +Patch 9.1.1280 +Problem: trailing additional semicolon in get_matches_in_str() + (Hirohito Higashi) +Solution: Remove it (Satoru Kitaguchi). + +Patch 9.1.1281 +Problem: extra newline output when editing stdin +Solution: Remove outputting when reading from stdin in non-terminal mode + (Abhijit Barik). + +Patch 9.1.1282 +Problem: Build and test failure without job feature (lazypingu). +Solution: Adjust ifdefs, add CheckFeature job to tests. + +Patch 9.1.1283 +Problem: quickfix and location-list stack is limited to 10 items +Solution: Add the 'chistory' and 'lhistory' options to configure a + larger quickfix/location list stack (64-bitman). + +Patch 9.1.1284 +Problem: not possible to configure the completion menu truncation + character +Solution: Add the "trunc" suboption to the 'fillchars' setting to + configure the truncation indicator (glepnir). + +Patch 9.1.1285 +Problem: Vim9: no error message for missing method after "super." +Solution: Output an error message, add a few more tests (Yegappan Lakshmanan). + +Patch 9.1.1286 +Problem: Help files not detected when 'iskeyword' includes ":". +Solution: Do not use \< and \> in the pattern (zeertzjq). + +Patch 9.1.1287 +Problem: quickfix code can be further improved (after v9.1.1283) +Solution: Slightly refactor quickfix.c (Hirohito Higashi). + +Patch 9.1.1288 +Problem: Using wrong window in ll_resize_stack() (after v9.1.1287) +Solution: Use "wp" instead of "curwin", even though they are always the + same value. Fix typos in documentation (zeertzjq). + +Patch 9.1.1289 +Problem: tests: no test for matchparen plugin with WinScrolled event +Solution: Add missing test. + +Patch 9.1.1290 +Problem: tests: missing cleanup in test_filetype.vim, wrong name in + test_plugin_matchparen +Solution: Add :bwipe corresponding to :split, rename test case. + +Patch 9.1.1291 +Problem: too many strlen() calls in buffer.c +Solution: Refactor buffer.c and remove strlen() calls (John Marriott). + +Patch 9.1.1292 +Problem: statusline not correctly evaluated (Peter Kenny, after v9.1.1291) +Solution: Revert part of Patch v9.1.1291 (Hirohito Higashi). + +Patch 9.1.1293 +Problem: comment plugin does not handle 'exclusive' selection for + comment object (@mawkish) +Solution: Handle special case selection='exclusive' for inline comment + object (Maxim Kim). + +Patch 9.1.1294 +Problem: gui tabline menu does not use confirm when closing tabs +Solution: Use ":confirm tabclose" explicitly (JMcKiern). + +Patch 9.1.1295 +Problem: clientserver: When in insert mode, a :stopinsert command + is not correctly processed (user202729) +Solution: If the :stopinsert command is received while waiting for + input, stuff the NOP key into the type-ahead buffer and + detect that :stopinsert was used in edit() so that the + cursor position is decremented. + +Patch 9.1.1296 +Problem: completion: incorrect truncation logic (after: v9.1.1284) +Solution: Replace string allocation with direct screen rendering and + fix RTL/LTR truncation calculations (glepnir). + +Patch 9.1.1297 +Problem: cursor_correct() calculates a valid cursor position which + is later changed by update_topline() and causes Ctrl-D + scrolling to be stuck (Daniel Steinberg, after v9.1.0258). +Solution: Update the valid cursor position before validating topline + (Luuk van Baal). + +Patch 9.1.1298 +Problem: define_function() is too long +Solution: Refactor and split up into smaller functions (Yegappan Lakshmanan). + +Patch 9.1.1299 +Problem: filetype: mbsyncrc files are not recognized +Solution: Detect isyncrc and "*.mbsyncrc" files as mbsync filetype, + include filetype and syntax plugin (Pierrick Guillaume). + +Patch 9.1.1300 +Problem: wrong detection of -inf +Solution: Correctly compare 4 characters and not 3 (John Marriott). + +Patch 9.1.1301 +Problem: completion: cannot configure completion functions with + 'complete' +Solution: Add support for setting completion functions using the f and o + flag for 'complete' (Girish Palya) + +Patch 9.1.1302 +Problem: Coverity warns about using uninitialized value + (Coverity, Tony Mechelynck, after v9.1.1301) +Solution: Initialize callback pointer to NULL + +Patch 9.1.1303 +Problem: missing out-of-memory check in linematch.c +Solution: Return early in case of memory allocation failure, move the + pow() calculation ouside of the for() loop (John Marriott). + +Patch 9.1.1304 +Problem: filetype: some man files are not recognized + (e.g. 1p (POSIX commands)) +Solution: Update the filetype detection pattern and detect more man + files as nroff (Eisuke Kawashima). + +Patch 9.1.1305 +Problem: When switching to another window or tab page while the + completion menu is active, the menu stays visible, although it + belongs to the previous window/tab page context (Evgeni + Chasnovski). +Solution: Track the window and tab page where completion started. Detect + changes in the main editing loop and cancel completion mode if + the current window or tab page differs from where completion + started. + +Patch 9.1.1306 +Problem: Parts of the popup menu were rendered twice when the popup was + at maximum width because the truncation flag was being set too + liberally. +Solution: Make the truncation condition more precise by only setting it + when there's exactly one character of space remaining (glepnir). + +Patch 9.1.1307 +Problem: GNU extensions, such as `ifeq` and `wildcard` function, are + highlighted in BSDmakefile +Solution: Detect BSD, GNU, or Microsoft implementation according to + filename, user-defined global variables, or file contents. + +Patch 9.1.1308 +Problem: During insert-mode completion, the most relevant match is often + the one closest to the cursor—frequently just above the current line. + However, both `` and `` tend to rank candidates from the + current buffer that appear above the cursor near the bottom of the + completion menu, rather than near the top. This ordering can feel + unintuitive, especially when `noselect` is active, as it doesn't + prioritize the most contextually relevant suggestions. +Solution: This change introduces a new sub-option value "nearest" for the + 'completeopt' setting. When enabled, matches from the current buffer + are prioritized based on their proximity to the cursor position, + improving the relevance of suggestions during completion + (Girish Palya). + +Patch 9.1.1309 +Problem: tests: no test for 'pummaxwidth' with non-truncated "kind". +Solution: Add a test with "kind" and larger 'pummaxwidth' (zeertzjq). + +Patch 9.1.1310 +Problem: Duplicate check for preinsert effect, particularly for Ctrl_w + and Ctrl_U. +Solution: Remove the specific check for Ctrl_w and Ctrl_U to eliminate + redundancy (glepnir). + +Patch 9.1.1311 +Problem: completion: not possible to limit number of matches +Solution: allow to limit the matches for 'complete' sources by using the + "{flag}^{limit}" notation (Girish Palya) + +Patch 9.1.1312 +Problem: tests: Test_backupskip() fails when HOME is defined +Solution: Unset $HOME temporarily + +Patch 9.1.1313 +Problem: compile warning about uninitialized value + (Tony Mechelynck, after v9.1.1311) +Solution: Initialize variable on declaration + +Patch 9.1.1314 +Problem: max allowed string width too small +Solution: Increased MAX_ALLOWED_STRING_WIDTH from 6400 to 1MiB + (Hirohito Higashi) + +Patch 9.1.1315 +Problem: chain complete does not work when 'cot' includes fuzzy + and 'completefuzzycollect' collects wrong next word (Konfekt). +Solution: Compl_startpos is not set correctly, remove next word check + in search_for_fuzzy_match (glepnir). + +Patch 9.1.1316 +Problem: missing memory allocation failure in os_mswin.c +Solution: Check for memory allocation failure and return early (John Marriott) + +Patch 9.1.1317 +Problem: noisy error when restoring folds from session fails +Solution: ignore errors silently when sourcing session file (Igor Lacerda). + +Patch 9.1.1318 +Problem: tests: test_format fails (after 9.1.1314). +Solution: Increase the string size. Add missing test_format.res in + NEW_TESTS_RES (zeertzjq). + +Patch 9.1.1319 +Problem: Various typos in the code, redundant and strange use of + :execute in test_ins_complete.vim (after 9.1.1315). +Solution: Fix typos in the code and in the documentation, use the + executed command directly (zeertzjq). + +Patch 9.1.1320 +Problem: filetype: alsoft config files are not recognized +Solution: Detect alsoft config files as dosini filetype (David Mandelberg). + +Patch 9.1.1321 +Problem: filetype: MS ixx and mpp files are not recognized +Solution: Detect *.mpp and *.ixx files as c++ filetype (Hampus Avekvist). + +Patch 9.1.1322 +Problem: small delete register cannot paste multi-line correctly + (after v8.2.2189) +Solution: Make this logic handle charwise only (phanium). + +Patch 9.1.1323 +Problem: b:undo_ftplugin not executed when re-using buffer (archy3) +Solution: Explicitly execute b:undo_ftplugin in buflist_new() when + re-using the current buffer. + +Patch 9.1.1324 +Problem: undefined behaviour if X11 connection dies +Solution: Call setjmp() before the main_loop() and restore x11 state + if the X11 connection dies (Foxe Chen). + +Patch 9.1.1325 +Problem: tests: not checking error numbers properly. +Solution: Add a trailing comma to avoid matching a different error + number with the same prefix (zeertzjq). + +Patch 9.1.1326 +Problem: invalid cursor position after 'tagfunc' (gandalf4a). +Solution: Call check_cursor() after executing the 'tagfunc'. + +Patch 9.1.1327 +Problem: filetype: nroff detection can be improved +Solution: Improve nroff detection (Eisuke Kawashima) + +Patch 9.1.1328 +Problem: too many strlen() calls in indent.c +Solution: Refactor indent.c slightly and remove strlen() calls (John Marriott) + +Patch 9.1.1329 +Problem: cannot get information about command line completion +Solution: Add CmdlineLeavePre autocommand and cmdcomplete_info() Vim + script function (Girish Palya) + +Patch 9.1.1330 +Problem: may receive E315 in terminal +Solution: Call check_cursor() (Hirohito Higashi). + +Patch 9.1.1331 +Problem: Leaking memory with cmdcomplete() (zeertzjq, after v9.1.1329) +Solution: Free the memory (Girish Palya). + +Patch 9.1.1332 +Problem: Vim9: segfault when using super within a lambda (lifepillar) +Solution: Inherit the class from the current function (Yegappan Lakshmanan). + +Patch 9.1.1333 +Problem: Coverity: complains about unutilized variable +Solution: Initialize typval properly + +Patch 9.1.1334 +Problem: Coverity complains about unchecked return value +Solution: Cast return value to (void) + +Patch 9.1.1335 +Problem: Coverity complains about Null pointer dereferences +Solution: Before accessing ccline->cmdbuff check that ccline is not NULL + +Patch 9.1.1336 +Problem: comment plugin does not support case-insensitive + 'commentstring' (char101) +Solution: Use pattern '\c' to make the regex case-insensitive (Maxim Kim). + +Patch 9.1.1337 +Problem: Undo corrupted with 'completeopt' "preinsert" when switching + buffer or window. +Solution: Do not delete preinsert text when switching buffer or window + (zeertzjq). + +Patch 9.1.1338 +Problem: Calling expand() interferes with cmdcomplete_info() (after 9.1.1329) +Solution: Only clear cmdline_orig when starting/ending cmdline mode (zeertzjq) + +Patch 9.1.1339 +Problem: missing out-of-memory checks for enc_to_utf16() and utf16_to_enc() +Solution: Add out-of-memory checks and fix a few other minor issues + (John Marriott) + +Patch 9.1.1340 +Problem: cannot complete :filetype arguments (Phạm Bình An) +Solution: Add :filetype ex command completion, add "filetypecmd" + completion type for getcompletion() + +Patch 9.1.1341 +Problem: Cannot define completion triggers and act upon it +Solution: Add the new option 'isexpand' and add the complete_match() + function to return the completion matches according to the + 'isexpand' setting (glepnir) + +Patch 9.1.1342 +Problem: Shebang filetype detection can be improved +Solution: Improve detection logic (Eisuke Kawashima) + +Patch 9.1.1343 +Problem: filetype: IPython files are not recognized (user202729). +Solution: Detect *.ipy files as python filetype. + +Patch 9.1.1344 +Problem: double free in f_complete_match() (after v9.1.1341) +Solution: Remove additional free of trig pointer, correctly free + regmatch.regprog and before_cursor in the error case. + +Patch 9.1.1345 +Problem: tests: Test_xxd_color2() test failure dump diff is misleading +Solution: Ensure the reference dump and the test dump are both processed the + same (Drew Vogel). + +Patch 9.1.1346 +Problem: missing out-of-memory check in textformat.c +Solution: Add out-of-memory check, add small optimizations to + internal_format() and same_leader() (John Marriott) + +Patch 9.1.1347 +Problem: small problems with gui_w32.c +Solution: Fix compile warnings and refactor code (John Marriott) + +Patch 9.1.1348 +Problem: still E315 with the terminal feature (user202729) +Solution: Call update_topline() in limit_scrollback() (Hirohito Higashi). + +Patch 9.1.1349 +Problem: CmdlineLeavePre may trigger twice (after v9.1.1329) +Solution: Check that the key was typed, trigger it when it wasn't before + (Girish Palya). + +Patch 9.1.1350 +Problem: tests: typo in Test_CmdlineLeavePre_cabbr() (after v9.1.1349) +Solution: Fix typo, disable failing test on Windows for now (Girish Palya). + +Patch 9.1.1351 +Problem: Return value of getcmdline() inconsistent in CmdlineLeavePre + when leaving cmdline in different ways (after v9.1.1329). +Solution: Trigger CmdlineLeavePre before calling abandon_cmdline() so + that getcmdline() can return the command line (zeertzjq). + +Patch 9.1.1352 +Problem: style: inconsistent indent in insexpand.c +Solution: Fix indentation (Hirohito Higashi). + +Patch 9.1.1353 +Problem: missing change from v9.1.1350 +Solution: Update the test Test_CmdlineTrigger() (Girish Palya). + +Patch 9.1.1354 +Problem: tests: Test_terminalwinscroll_topline() fails on Windows +Solution: Instead of disabling it in Github Actions runners, disable it + for all Windows runs. + +Patch 9.1.1355 +Problem: The pum_redraw function is too complex and difficult to + maintain with nested loops and mixed responsibilities handling + both RTL and LTR text rendering. +Solution: Extracted core rendering logic into dedicated helper functions + (pum_display_rtl_text, pum_display_ltr_text, pum_draw_scrollbar, + pum_process_item) while preserving the original behavior. This + improves code readability and maintainability (glepnir). + +Patch 9.1.1356 +Problem: Vim9: crash when unletting variable +Solution: Fix crash, allow to use :unlet (Hirohito Higashi). + +Patch 9.1.1357 +Problem: Vim incorrectly escapes tags containing "[" in a help buffer +Solution: Check if the buffer has the "help" filetype set, instead of + already being a help buffer (Phạm Bình An). + +Patch 9.1.1358 +Problem: if_lua: compile warnings with gcc15 +Solution: Update function prototypes (lilydjwg). + +Patch 9.1.1359 +Problem: filetype: GNU Radio config files are not recognized. +Solution: Detect GNU Radio config files as confini filetype. Only + allow '#' as start of comment in confini syntax (zeertzjq). + +Patch 9.1.1360 +Problem: filetype: GNU Radio companion files are not recognized +Solution: Detect *.grc files as xml or yaml filetype depending on the + first line (zeertzjq). + +Patch 9.1.1361 +Problem: [security]: Possible to open more windows into a closing + buffer without splitting, bypassing existing "b_locked_split" + checks and triggering use-after-free +Solution: Disallow switching to a closing buffer. Editing a closing + buffer (via ":edit", etc.) was fixed in v9.1.0764, but add an + error message and check just "b_locked_split", as "b_locked" + is necessary only when the buffer shouldn't be wiped, and may + be set for buffers that are in-use but not actually closing + (Sean Dewar). + +Patch 9.1.1362 +Problem: Vim9: type ignored when adding tuple to instance list var + (Lifepillar) +Solution: When getting the typval of class and object member variables, + set the variable type (Yegappan Lakshmanan). + +Patch 9.1.1363 +Problem: style: inconsistent indentation in various files +Solution: Fix style, updated codestyle test (Naruhiko Nishino). + +Patch 9.1.1364 +Problem: style: more indentation issues +Solution: Fix indentation style (Yegappan Lakshmanan). + +Patch 9.1.1365 +Problem: MS-Windows: compile warnings and too many strlen() calls in + os_mswin.c +Solution: Refactor os_mswin.c and fix the warning (John Marriott). + +Patch 9.1.1366 +Problem: v9.1.1364 unintentionally changed sign.c and sound.c +Solution: Revert those parts, adjust the test (Hirohito Higashi). + +Patch 9.1.1367 +Problem: too many strlen() calls in gui.c +Solution: Refactor gui.c slightly (John Marriott). + +Patch 9.1.1368 +Problem: GTK3 and GTK4 will drop numeric cursor support. +Solution: Adopt GTK3 code and use CSS cursor convention (Drew Vogel). + +Patch 9.1.1369 +Problem: configure still using autoconf 2.71 +Solution: Regenerate with autoconf 2.72. + +Patch 9.1.1370 +Problem: CI Tests favor GTK2 over GTK3 +Solution: Install GTK3 dependencies and debug packages for CI workflows, + update ASAN suppression list, update required dependency + checks for the tests (Drew Vogel). + +Patch 9.1.1371 +Problem: style: indentation issue in insexpand.c +Solution: Update style (glepnir). + +Patch 9.1.1372 +Problem: style: braces issues in various files +Solution: Fix style (Hirohito Higashi). + +Patch 9.1.1373 +Problem: Flag checking logic uses a temporary variable and multiple + bitwise operations in insexpand.c +Solution: Consolidate into a single equality check using bitwise OR and + comparison (glepnir). + +Patch 9.1.1374 +Problem: Currently, 'smartcase' is respected when completing keywords + using , , , and . However, when + a user continues typing and the completion menu is filtered + using cached matches, 'smartcase' is not applied. This leads + to poor-quality or irrelevant completion suggestions, as shown + in the example below. +Solution: When filtering cached completion items after typing additional + characters, apply case-sensitive comparison if 'smartcase' is + enabled and the typed pattern includes uppercase characters. + This ensures consistent and expected completion behavior + (Girish Palya). + +Patch 9.1.1375 +Problem: heap use-after-free possible when autocommands switch away from the + quickfix dummy buffer, but leave it open in a window. +Solution: Close its windows first before attempting the wipe (Sean Dewar). + +Patch 9.1.1376 +Problem: when failing to wipeout a quickfix dummy buffer, it will + remain as a dummy buffer, despite being kept. +Solution: Clear its dummy BF_DUMMY flag in this case (Sean Dewar). + +Patch 9.1.1377 +Problem: Some GTK3 users experienced unexpectedly small windows at + startup (after v9.1.1368, @berggeist, Tony Mechelynck) +Solution: Update window manager hints in gui_mch_open, partly revert + v9.1.1370 (Drew Vogel). + +Patch 9.1.1378 +Problem: When 'signcolumn' is set to `number` but a line has a sign + without text, the line number disappears (finite-state-machine) +Solution: Verify that a sign actually contains text before rendering the + line number (glepnir). + +Patch 9.1.1379 +Problem: MS-Windows: error when running evim when space in path of Vim +Solution: Properly parse quoted strings (Miguel Barro) + +Patch 9.1.1380 +Problem: When an autocommand executes for a non-current buffer, + 'eventignorewin' is only checked from the buffer's last + wininfo (overwrites win_ignore in the loop), not from the + value of 'eventignorewin' in all windows showing the buffer as + described (after v9.1.1084) +Solution: Fix the check and don't use wininfo, as that may only contain + windows that recently showed the buffer. Consider all the + buffer's windows in all tabpages (Sean Dewar). + +Patch 9.1.1381 +Problem: Cannot return to the original text after selecting the next + item when the currently selected item is the last one. +Solution: When continuing to move down past the last item, locate the + original completion at the head/tail nodes of the completed + linked list (glepnir). + +Patch 9.1.1382 +Problem: if_ruby: unused compiler warnings from ruby internals +Solution: disable -Wunused-parameter for if_ruby internal code (Philip H.). + +Patch 9.1.1383 +Problem: When a space character is used as a trigger in 'isexpand' option + it doesn't get recognized because skip_to_option_part() skips + spaces after a comma, treating them as option separators + rather than option value (after v9.1.1341) +Solution: Manually set the part to a space character (glepnir). + +Patch 9.1.1384 +Problem: still some problem with the new tutors filetype plugin +Solution: Refactor code to enable/disable tutor mode into + tutor#EnableInteractive() function, include a test + (Phạm Bình An). + +Patch 9.1.1385 +Problem: Loop that ensures "w_skipcol" is zero with 'nosmoothscroll' + for (half)-page scrolling is inefficient. +Solution: Calculate the required "count" instead of looping until + "w_skipcol" is zero (Luuk van Baal). + +Patch 9.1.1386 +Problem: MS-Windows: some minor problems building on AARCH64 +Solution: Update Make_cyg_ming with aarch64 specific changes, + document how to build on aarch64 using msys2 packages. + +Patch 9.1.1387 +Problem: buflist_new() leaks ffname and fails to reuse curbuf when + autocommands from buf_freeall change curbuf. Plus, a new + buffer is not allocated in this case, despite what the comment + above claims. +Solution: Remove the condition so ffname is not leaked and so a new + buffer is allocated like before v8.2.4791. It should not be + possible for undo_ftplugin or buf_freeall autocommands to + delete the buffer as they set b_locked, but to stay consistent + with other uses of buf_freeall, guard against that anyway + (Sean Dewar). + +Patch 9.1.1388 +Problem: One-off error in "count" to make "w_skipcol" zero with + 'nosmoothscroll' page scrolling when last virtual line + in a buffer line is exactly the entire window width + (Hirohito Higashi). +Solution: Properly compute the smallest integer value necessary + to make "w_skipcol" zero (Luuk van Baal). + +Patch 9.1.1389 +Problem: Cannot get completion startcol when space is not the first + trigger character (after v9.1.1383) +Solution: Detect the next comma followed by a space in the option string + and use in next compare loop (glepnir). + +Patch 9.1.1390 +Problem: style: more wrong indentation +Solution: reformat a few more places (Yegappan Lakshmanan). + +Patch 9.1.1391 +Problem: Vim does not have a tabpanel +Solution: Include the tabpanel feature (Naruhiko Nishino, thinca). + +Patch 9.1.1392 +Problem: missing Patch number (Tony Mechelynck) +Solution: add missing Patche number. + +Patch 9.1.1393 +Problem: The check in buf_freeall that restores curwin subtly prevents + leaving an unloaded buffer in a window when reusing curbuf, if + autocommands switch to a different buffer. +Solution: Add a test case that covers this. Also ensure splitting isn't + possible, as that could do the same (Sean Dewar). + +Patch 9.1.1394 +Problem: tabpanel not correctly redrawn on tabonly + (Maxim Kim, after v9.1.1391) +Solution: Force redraw of the tabpanel, tweak style (Hirohito Higashi). + +Patch 9.1.1395 +Problem: Search_stat not reset when pattern differs in case + (tahzibijafar) +Solution: Use STRNCMP instead of MB_STRNICMP macro. + +Patch 9.1.1396 +Problem: The 'grepformat' option is global option, but it would be + useful to have it buffer-local, similar to 'errorformat' and + other quickfix related options (Dani Dickstein) +Solution: Add the necessary code to support global-local 'grepformat', + allowing different buffers to parse different grep output + formats (glepnir). + +Patch 9.1.1397 +Problem: tabpanel not correctly updated on :tabonly (Maxim Kim) +Solution: Force a redraw, take 'equalalways' into account (Naruhiko Nishino). + +Patch 9.1.1398 +Problem: When items are combined with user-defined highlight attributes + (e.g., strikethrough), trunc inherits these attributes, making + the text difficult to read. +Solution: Trunc now uses the original Pmenu and PmenuSel highlight + attributes (glepnir). + +Patch 9.1.1399 +Problem: tests: test_codestyle fails for auto-generated files. + While those files are already ignored in Test_source_Files(), + the newly added Test_indent_of_source_files() does not filter + those out and causes test failures on appveyor. +Solution: Factor out the generation of all c files into a common function + and filter out auto-generated files if_ole.h, iid_ole.c and + dlldata.c + +Patch 9.1.1400 +Problem: [security]: use-after-free when evaluating tuple fails +Solution: Return early in case of an error (Yegappan Lakshmanan). + +Patch 9.1.1401 +Problem: list not materialized in prop_list() (Nickwiz) +Solution: Materialize list before accessing it. + +Patch 9.1.1402 +Problem: multi-byte mappings not properly stored in session file +Solution: Unescape the mapping before writing out the mapping, prefer + single-byte mapping name if possible (Miguel Barro). + +Patch 9.1.1403 +Problem: expansion of 'tabpanelopt' value adds wrong values + (Shane-XB-Qian, after v9.1.1391). +Solution: Update tabpanelopt expansion function and expand only valid + values (Hirohito Higashi). + +Patch 9.1.1404 +Problem: wrong link to Chapter 2 in vim-01-beginner.tutor +Solution: Fix the link to Chapter 2, add test for links in tutor files + (Phạm Bình An). + +Patch 9.1.1405 +Problem: tests: no test for mapping with special keys in session file. +Solution: Add a special keys to an existing test. Also test with UTF-8 + characters containing 0x80 or 0x9b bytes (zeertzjq). + +Patch 9.1.1406 +Problem: crash when importing invalid tuple (Yang LUO, Yanju Chen) +Solution: Set type to VAR_UNKNOWN, so that it isn't freed + (Yegappan Lakshmanan). + +Patch 9.1.1407 +Problem: Can't use getpos('v') in OptionSet when using setbufvar(). +Solution: Don't reset Visual selection when switching to the same + buffer (zeertzjq). + +Patch 9.1.1408 +Problem: not easily possible to complete from register content +Solution: Add register-completion submode using i_CTRL-X_CTRL-R + (glepnir). + +Patch 9.1.1409 +Problem: using f-flag in 'complete' conflicts with Neovims filename + completion (glepnir, after v9.1.1301). +Solution: Use upper-case "F" flag for completion functions (Girish Palya). + +Patch 9.1.1410 +Problem: out-of-bounds access with 'completefunc' (csetc) +Solution: Check if it is safe to advance cpt_sources_index (Girish Palya). + +Patch 9.1.1411 +Problem: crash when calling non-existing function for tabpanel (Yamagi, + after v9.1.1391) +Solution: Check if there was an error and if there was, set tabpanel + option to empty to prevent showing errors on every redraw. + +Patch 9.1.1412 +Problem: tests: Test_tabpanel_tabonly() fails on larger screens +Solution: Re-generate screendump file for 78 column large terminal. + +Patch 9.1.1413 +Problem: spurious CursorHold triggered in GUI on startup +Solution: Init global did_cursorhold flag to true (Gary Johnson). + +Patch 9.1.1414 +Problem: MS-Windows: compile warnings in os_win32.c +Solution: Update function declarations, correctly access param arg in + set_flag() using (sig_atomic_t) cast (John Marriott). + +Patch 9.1.1415 +Problem: potential use-after free when there is an error in 'tabpanel' + option (@char101, after v9.1.1391) +Solution: Check if p_tpl has been set to null before accessing it again. + +Patch 9.1.1416 +Problem: completion limits not respected when using fuzzy completion + (Maxim Kim) +Solution: Trim completion array (Girish Palya). + +Patch 9.1.1417 +Problem: missing info about register completion in complete_info() + (after v9.1.1408) +Solution: update documentation and mention that register is used as + source, add a test (glepnir). + +Patch 9.1.1418 +Problem: configures GUI auto detection favors GTK2 +Solution: make configure favor GTK3 over GTK2 for the GUI + when auto detecting the gui toolkit (Drew Vogel). + +Patch 9.1.1419 +Problem: It is difficult to ignore all but some events. +Solution: Add support for a "-" prefix syntax in '(win)eventignore' that + subtracts an event from the ignored set if present (Luuk van Baal). + +Patch 9.1.1420 +Problem: tests: could need some more tests for shebang lines +Solution: Add more shebang patterns to test_filetype.vim (Eisuke Kawashima). + +Patch 9.1.1421 +Problem: tests: need a test for the new-style tutor.tutor, Patch + 9.1.1384 broke the expected positions for the signs +Solution: Update all number keys in tutor.tutor.json to match the + correct line numbers in tutor.tutor, replace tabs by spaces, + add a screen-dump test to verify it does not regress (Pham Bình An). + +Patch 9.1.1422 +Problem: scheduling of complete function can be improved +Solution: Call user completion functions earlier when just determining + the insertion column (Girish Palya). + +Patch 9.1.1423 +Problem: :tag command not working correctly using Vim9 Script +Solution: Inject a ':' before the numeric address, to make the command + valid in Vim9 context + +Patch 9.1.1424 +Problem: PMenu selection broken with multi-line selection and limits + (Maxim Kim) +Solution: Update completion match index when limiting the completion + sources (Girish Palya). + +Patch 9.1.1425 +Problem: tabpanel: there are still some problems with the tabpanel with + column handling +Solution: Fix the problems and refactor Tabpanel feature (Hirohito Higashi). + +Patch 9.1.1426 +Problem: CTRL-X CTRL-R only completes individual words from registers, + making it difficult to insert complete register content. +Solution: Add consecutive CTRL-X CTRL-R support - first press completes + words, second press completes full register lines, similar to + CTRL-X CTRL-L and CTRL-X CTRL-P behavior (glepnir). + +Patch 9.1.1427 +Problem: rendering artifacts with the tabpanel (char101) +Solution: Prevent double redraw, use Columns instead of frame width + (Hirohito Higashi) + +Patch 9.1.1428 +Problem: Completion: register completion needs cleanup +Solution: Slightly refactor get_register_completion() (glepnir). + +Patch 9.1.1429 +Problem: dragging outside the tabpanel changes tabpagenr (char101) +Solution: Set in_tab_line and in_tabpanel variables (Hirohito Higashi). + +Patch 9.1.1430 +Problem: tabpanel may flicker in the GUI +Solution: Call scroll_start() and scroll_region_reset() (Hirohito Higashi). + +Patch 9.1.1431 +Problem: Hit-Enter Prompt when loading session files +Solution: Use set+= for 'shortmess' to keep the existing flags (Miguel Barro). + +Patch 9.1.1432 +Problem: GTK GUI: Buffer menu does not handle unicode correctly +Solution: Get rid of the BMHash() function (SUN Haitao). + +Patch 9.1.1433 +Problem: Unnecessary :if in session where both branches have the same + effect (after 9.1.1431). +Solution: Remove the superfluous :if (zeertzjq). + +Patch 9.1.1434 +Problem: MS-Windows: missing out-of-memory checks in os_win32.c +Solution: Add out-of-memory checks to os_win32.c (John Marriott). + +Patch 9.1.1435 +Problem: completion: various flaws in fuzzy completion +Solution: Fix the issues (Girish Palya). + +Patch 9.1.1436 +Problem: GUI control code is displayed on the console on startup +Solution: Check if Vim is starting up (Hirohito Higashi). + +Patch 9.1.1437 +Problem: MS-Windows: internal compile error in uc_list() with VS 17.14 + (ibear) +Solution: Refactor code slightly (Mike Williams). + +Patch 9.1.1438 +Problem: tests: Test_breakindent_list_split() fails (Phạm Bình An) +Solution: Always reset "&columns" and "&lines" for GUI builds + (Aliaksei Budavei). + +Patch 9.1.1439 +Problem: Last diff folds not merged (after v8.1.1922) +Solution: Loop over all windows in the current tabpage and update all + folds (Gary Johnson). + +Patch 9.1.1440 +Problem: too many strlen() calls in os_win32.c +Solution: Refactor code and remove calls to strlen() (John Marriott). + +Patch 9.1.1441 +Problem: completion: code can be improved +Solution: Remove reposition_match() and use mergesort_list(), + for fuzzy completion, sort by fuzzy score immediately after + setting a new leader (Girish Palya). + +Patch 9.1.1442 +Problem: tests: Test_diff_fold_redraw() is insufficient + (after v9.1.1439, Christ van Willegen) +Solution: Improve the test (Gary Johnson). + +Patch 9.1.1443 +Problem: potential buffer underflow in insertchar() +Solution: Verify that end_len is larger than zero (jinyaoguo). + +Patch 9.1.1444 +Problem: Unused assignment in set_fuzzy_score() (after 9.1.1441). +Solution: Remove it (zeertzjq). + +Patch 9.1.1445 +Problem: negative matchfuzzy scores although there is a match (Maxim Kim). +Solution: Reset the score if a match has been found but the score is + negative (Girish Palya). + +Patch 9.1.1446 +Problem: filetype: cuda-gdb config files are not recognized +Solution: Detect .cuda-gdbinit and cuda-gdbinit files as gdb filetype + (Wu Zhenyu). + +Patch 9.1.1447 +Problem: completion: crash when backspacing with fuzzy completion +Solution: Don't dereference compl_first_match when it's NULL (zeertzjq). + +Patch 9.1.1448 +Problem: tabpanel is not displayed correctly when msg_scrolled +Solution: Remove the msg_scrolled condition (Hirohito Higashi). + +Patch 9.1.1449 +Problem: typo in pum_display() +Solution: Update the comment, remove empty new lines (glepnir) + +Patch 9.1.1450 +Problem: Session has wrong arglist with :tcd and :arglocal. +Solution: Also use absolute path for :argadd when there is tabpage-local + directory (zeertzjq). + +Patch 9.1.1451 +Problem: tabpanel rendering artifacts when scrolling +Solution: Update scrolling logic (Hirohito Higashi). + +Patch 9.1.1452 +Problem: completion: redundant check for completion flags +Solution: Refactor code slightly (glepnir). + +Patch 9.1.1453 +Problem: tests: Test_geometry() may fail (Gary Johnson) +Solution: Allow a slightly smaller value when checking the number of + lines. + +Patch 9.1.1454 +Problem: Missing test case for pum display on a wrapped line. +Solution: Add a test case to cover pum behavior at line break positions + (glepnir). + +Patch 9.1.1455 +Problem: Haiku: dailog objects created with no reference +Solution: Delete the objects before returning (jinyaoguo) + +Patch 9.1.1456 +Problem: comment plugin fails toggling if 'cms' contains \ +Solution: Escape backslash (Maxim Kim). + +Patch 9.1.1457 +Problem: compile warning with tabpanelopt +Solution: Declare arg as UNUSED (John Marriott). + +Patch 9.1.1458 +Problem: tabpanel: tabs not properly updated with 'stpl' +Solution: remember the Column offset per tabpage (Hirohito Higashi). + +Patch 9.1.1459 +Problem: xxd prints color escape sequences for every octet + even if the color doesn't change +Solution: use separate arrays for colors and text and only + print escape sequences when the color changes (Emanuel Krollmann). + +Patch 9.1.1460 +Problem: MS-Windows: too many strlen() calls in os_win32.c +Solution: Refactor code and remove calls to strlen() and wcscat() + (John Marriott). + +Patch 9.1.1461 +Problem: tabpanel: tabpanel vanishes with popup menu +Solution: Remove pum-related test in tabpanel_leftcol(), refactor a few + related functions (Hirohito Higashi). + +Patch 9.1.1462 +Problem: missing change from Patch v9.1.1461 +Solution: Change wrong TPL_LCOL macro in a few more places. + +Patch 9.1.1463 +Problem: Integer overflow in getmarklist() after linewise operation. +Solution: Don't add 1 to MAXCOL (zeertzjq). + +Patch 9.1.1464 +Problem: gv does not work in operator-pending mode (liushapku) +Solution: remove the check for checkclearop in nv_gv_cmd() (phanium). + +Patch 9.1.1465 +Problem: tabpanel: not correctly drawn with 'equalalways' +Solution: Call win_equal() (Hirohito Higashi). + +Patch 9.1.1466 +Problem: filetype: not all lex files are recognized +Solution: Detect *.ll as lex, llvm or lifelines filetype, depending on + the content (Eisuke Kawashima). + +Patch 9.1.1467 +Problem: too many strlen() calls +Solution: Change expand_env() to return string length (John Marriott). + +Patch 9.1.1468 +Problem: filetype: bright(er)script files are not recognized +Solution: Detect *.bs files as brighterscript filetype and *.brs as + brightscript filetype, include filetype plugins (Riley Bruins). + +Patch 9.1.1469 +Problem: potential buffer-underflow with invalid hl_id (mugitya03) +Solution: Assert that the return-code of syn_get_final_id() if > 0 + +Patch 9.1.1470 +Problem: use-after-free with popup callback on error + (Brian Carbone, lifepillar) +Solution: Check if the popup window is valid before accessing it. + +Patch 9.1.1471 +Problem: completion: inconsistent ordering with CTRL-P (zeertzjq). +Solution: Reset compl_curr_match when using CTRL-P (Girish Palya). + +Patch 9.1.1472 +Problem: if_python: PySequence_Fast_{GET_SIZE,GET_ITEM} removed with + python3.14 in stable ABI +Solution: use PySequence_{Size,GetItem} instead (Zdenek Dohnal) + +Patch 9.1.1473 +Problem: inconsistent range arg for :diffget/diffput +Solution: Fix the range specification, place the cursor for :diffput and + :diffget consistently on the last line (Yee Cheng Chin) + +Patch 9.1.1474 +Problem: missing out-of-memory check in mark.c +Solution: bail out, if mark_line() returns NULL (John Marriott). + +Patch 9.1.1475 +Problem: completion: regression when "nearest" in 'completeopt' +Solution: Fix compare function (Girish Palya). + +Patch 9.1.1476 +Problem: missing out-of-memory checks in cmdexpand.c +Solution: Add missing out-of-memory checks, re-order code (John Marriott). + +Patch 9.1.1476 +Problem: no easy way to deduplicate text +Solution: Add the :uniq ex command (Hirohito Higashi). + +Patch 9.1.1478 +Problem: Unused assignment in ex_uniq() (after v9.1.1476) +Solution: Remove the assignment and the wrong comments above (zeertzjq). + +Patch 9.1.1479 +Problem: regression when displaying localized percentage position + (after v9.1.1291) +Solution: Calculate percentage first (Emir SARI). + +Patch 9.1.1480 +Problem: Turkish translation outdated +Solution: Update Turkish translations, enable disabled test from v9.1.1479 + (Emir SARI). + +Patch 9.1.1481 +Problem: gcc complains about uninitialized variable + (Tony Mechelynck, after v9.1.1476) +Solution: Initialize variable. + +Patch 9.1.1482 +Problem: Topline is preemptively updated by line() in WinResized + autocmd with 'splitkeep' != "cursor". +Solution: Set `skip_update_topline` when 'splitkeep' != "cursor" (Luuk van Baal) + +Patch 9.1.1483 +Problem: not possible to translation position in buffer +Solution: use _() macro to mark the output as translatable (Emir SARI) + +Patch 9.1.1484 +Problem: tests: Turkish locale tests fails on Mac (after v9.1.1480). +Solution: Skip the test Test_pos_percentage_in_turkish_locale() on Mac + +Patch 9.1.1485 +Problem: missing Wayland clipboard support +Solution: Make it work (Foxe Chen). + +Patch 9.1.1486 +Problem: documentation issues with Wayland (after v9.1.1485) +Solution: Tweak documentation style. Capitalize the first letter of + Wayland (Hirohito Higashi). + +Patch 9.1.1487 +Problem: :cl doesn't invoke :clist (after v9.1.1485) +Solution: Fix order of definition in ex_cmds.h (Hirohito Higashi). + +Patch 9.1.1488 +Problem: configure: using obsolete macro AC_PROG_GCC_TRADITIONAL +Solution: Drop it from configure.ac, regenerate auto/configure. + +Patch 9.1.1489 +Problem: terminal: no visual highlight of empty cols when 'listchars' + is empty (Yousef Mohammed) +Solution: Reset wlv.win_attr when column is zero and we are drawing a + terminal buffer. + +Patch 9.1.1490 +Problem: 'wildchar' does not work in search contexts +Solution: implement search completion when 'wildchar' is typed (Girish Palya). + +Patch 9.1.1491 +Problem: missing out-of-memory checks in cmdexpand.c +Solution: Add out-of-memory checks for expand_files_and_dirs(), + ExpandUserDefined() and ExpandUserList() (John Marriott). + +Patch 9.1.1492 +Problem: tests: failure when Wayland compositor fails to start +Solution: Instead of throwing an error causing a failure, throw + "Skipped", so that the Vim test suite continues and does not fail. + +Patch 9.1.1493 +Problem: manually comparing positions on buffer (after v9.1.1490) +Solution: Use the LTOREQ_POS() macro, fix a few other minor style issues + (glepnir). + +Patch 9.1.1494 +Problem: runtime(tutor): no French translation for Chapter 2 +Solution: Add and refine French translation of tutor2, update French + vimtutor manpage (Damien Lejay) + +Patch 9.1.1495 +Problem: Wayland: uses $XDG_SEAT to determine seat to use + (dr0bz, after v9.1.1485) +Solution: Do not try to determine the seat from $XDG_SEAT, remove the + code that checks for this environment variable (Foxe Chen). + +Patch 9.1.1496 +Problem: terminal: still not highlighting empty cells correctly + (Yousef Mohammed, after v9.1.1489) +Solution: Use vcol instead of col. + +Patch 9.1.1497 +Problem: Link error with shm_open() (gcanat, after v9.1.1485). +Solution: use AC_LINK_IFELSE instead of AC_COMPILE_IFELSE. + +Patch 9.1.1498 +Problem: completion: Functions specified in the 'complete' option did + not have the leader string removed when called with findstart = 0, + unlike 'omnifunc' behavior +Solution: Update behaviour and make behaviour consistent (Girish Palya). + +Patch 9.1.1499 +Problem: MS-Windows: no indication of ARM64 architecture +Solution: Add ARM64 to version output and include in nsis installer + (RestorerZ) + +Patch 9.1.1500 +Problem: if_python: typo in python error variable +Solution: Fix typo (Damien Lejay). + +Patch 9.1.1501 +Problem: filetype: flix files are not recognized +Solution: Detect *.flix files as flix filetype (0xadk). + +Patch 9.1.1502 +Problem: filetype: quickbms files are not recognized +Solution: Detect *.bms files as quickbms filetype (0xadk). + +Patch 9.1.1503 +Problem: filetype: haxe files are not recognized +Solution: Detect *.hx files as haxe filetype (0xadk). + +Patch 9.1.1504 +Problem: filetype: numbat files are not recognized +Solution: Detect *.nbt files as numbat filetype (0xadk). + +Patch 9.1.1505 +Problem: not possible to return command-line completion type for :ex + command +Solution: Make getcmdcompltype() accept an optional and return the + command-line completion for that arg (Shougo Matsushita). + +Patch 9.1.1506 +Problem: tests: missing cleanup test_override('char_avail', 0) in + Test_search_cmdline_incsearch_highlight(). +Solution: Add the missing cleanup (zeertzjq). + +Patch 9.1.1507 +Problem: File paths change from symlink to target path after :cd command + when editing files through symbolic links +Solution: Add "~" flag to 'cpoptions' to control symlink resolution (glepnir). + +Patch 9.1.1508 +Problem: String manipulation can be improved in cmdexpand.c +Solution: Refactor cmdexpand.c to remove calls to STRLEN()/STRMOVE()/STRCAT() + (John Marriott). + +Patch 9.1.1509 +Problem: Patch 9.1.1505 was not good +Solution: Revert "Patch 9.1.1505 for :ex command" and instead add the + getcompletiontype() function (Hirohito Higashi). + +Patch 9.1.1510 +Problem: Search completion may use invalid memory (after 9.1.1490). +Solution: Don't get two line pointers at the same time (zeertzjq). + +Patch 9.1.1511 +Problem: tests: two edit tests change v:testing from 1 to 0. +Solution: Don't change v:testing in these two tests, since it's already + set to 1 in runtest.vim (zeertzjq). + +Patch 9.1.1512 +Problem: completion: can only complete from keyword characters +Solution: Remove this restriction, allow completion functions when + called from i_CTRL-N/i_CTRL-P to be triggered from non-keyword + characters (Girish Palya). + +Patch 9.1.1513 +Problem: resizing Vim window causes unexpected internal window width + (chdiza, after v9.1.1465) +Solution: Move the column calculation around (Hirohito Higashi). + +Patch 9.1.1514 +Problem: coverity complains about the use of tmpfile() +Solution: Use vim_tempname() instead to create anonym file. + +Patch 9.1.1515 +Problem: memcpy() in ExpandRTDir_int() may create unterminated strings +Solution: Use vim_snprintf() to construct complete paths safely (glepnir). + +Patch 9.1.1516 +Problem: tests: no test that 'incsearch' is updated after accepting + search completion. +Solution: Add a test case (zeertzjq). + +Patch 9.1.1517 +Problem: filetype: autopkgtest files are not recognized +Solution: Detect */debian/tests/control files as autopkgtest filetype + (James McCoy). + +Patch 9.1.1518 +Problem: getcompletiontype() crashes when no completion is available + (after v9.1.1509). +Solution: Don't call set_expand_context() (zeertzjq). + +Patch 9.1.1519 +Problem: Test_termdebug_decimal_breakpoints() fails with List index out + of range, because when adding the second breakpoint, the + cursor is still on the very first line +Solution: Run the program, so that it will break at the very first + defined breakpoint and then once we are in the program, + set further breakpoints. + +Patch 9.1.1520 +Problem: When using `/` or `?` in command-line mode with 'ignorecase' and + 'smartcase' enabled, the completion menu could show items that + don't actually match any text in the buffer due to case mismatches +Solution: Instead of validating menu items only against the user-typed + pattern, the new logic also checks whether the completed item + matches actual buffer content. If needed, it retries the match + using a lowercased version of the candidate, respecting + smartcase semantics. + +Patch 9.1.1521 +Problem: When 'wildmode' is set to include "noselect", the popup menu (pum) + incorrectly retained its scroll position when reopened. This + meant that after scrolling down through the menu with ``, + reopening the menu (e.g., by retyping the command and + triggering completion again) would show the menu starting from + the previously scrolled position, rather than from the top. +Solution: Ensure that the popup menu resets its scroll position to the + top when reopened (Girish Palya). + +Patch 9.1.1522 +Problem: tests: still some ANSI escape sequences in test messages output +Solution: Update the cleanup regexp to also handle those ANSI escape + sequences: `|2h` and `|31H`. + +Patch 9.1.1523 +Problem: tests: test_clipmethod fails in non X11 environment +Solution: Test that $DISPLAY is available + +Patch 9.1.1524 +Problem: tests: too many imports in the test suite +Solution: Clean up the imported scripts. + +Patch 9.1.1525 +Problem: tests: testdir is a bit messy +Solution: Move test scripts into testdir/util/ directory. + +Patch 9.1.1526 +Problem: completion: search completion match may differ in case (techntools) +Solution: Add "exacttext" to 'wildoptions' value (Girish Palya). + +Patch 9.1.1527 +Problem: Vim9: Crash when using string compound assignment with wrong + data type (lacygoill). +Solution: Verify expected member type (Hirohito Higashi). + +Patch 9.1.1528 +Problem: completion: crash with getcompletion() (zeertzjq) +Solution: Don't set may_expand_pattern in f_getcompletion(), unset + may_expand_pattern() once it is not longer needed (Girish Palya). + +Patch 9.1.1529 +Problem: Win32: the toolbar in the GUI is old and dated +Solution: Include improved icons from Fatcow (CC by 3.0) (RestorerZ). + +Patch 9.1.1530 +Problem: Missing version change from v9.1.1529 +Solution: Update version.c with latest Patch. + +Patch 9.1.1531 +Problem: confusing error with nested legacy function (lacygoill) +Solution: Clarify error message E1117 with :def or :func (Hirohito Higashi). + +Patch 9.1.1532 +Problem: termdebug: not enough ways to configure breakpoints +Solution: Add the termdebug_config['signs'] config setting, rework the + termdebug test cases (Dimitry Ishenko). + +Patch 9.1.1533 +Problem: helptoc: does not handle code sections in markdown well (VimWei). +Solution: Skip over fenced code sections (lacygoill), add a test. + +Patch 9.1.1534 +Problem: unnecessary code in tabpanel.c +Solution: Remove it (Hirohito Higashi). + +Patch 9.1.1535 +Problem: The maximum search count uses a hard-coded value of 99 + (Andres Monge, Joschua Kesper) +Solution: Make it configurable using the 'maxsearchcount' option. + +Patch 9.1.1536 +Problem: tests: test_plugin_comment.vim uses :CheckScreenDump check but + doesn't actually use a screen dump. +Solution: Use :CheckRunVimInTerminal instead, remove a few empty lines. + +Patch 9.1.1537 +Problem: helptoc: some issues when parsing markdown code blocks (VimWei) +Solution: Assign nextline to curline before starting the next loop + iteration; when processing fenced code blocks, flip the + skip_fence variable, update the test to be more comprehensive. + +Patch 9.1.1539 +Problem: completion: messages don't respect 'shm' setting +Solution: Turn off completion messages when 'shortmess' includes "c" + (Girish Palya). + +Patch 9.1.1540 +Problem: completion: menu state wrong on interruption (Maxim Kim) +Solution: Call show_pum() if completion was interrupted (Girish Palya). + +Patch 9.1.1541 +Problem: Vim9: error when last enum value ends with a comma +Solution: Allow trailing commas in enum values (Yegappan Lakshmanan). + +Patch 9.1.1542 +Problem: Coverity complains about uninitialized variable (Tony Mechelynck) +Solution: Initialize variables. + +Patch 9.1.1543 +Problem: Wayland: clipboard appears to not be working (Fuad Veliev) +Solution: Explicitly set selection each time (Foxe Chen). + +Patch 9.1.1544 +Problem: :retab cannot be limited to indentation only +Solution: add the optional -indentonly parameter (Hirohito Higashi). + +Patch 9.1.1545 +Problem: Typo in os_unix.c +Solution: Correct the typo (Foxe Chen). + +Patch 9.1.1546 +Problem: Vim9: error with has() and short circuit evaluation +Solution: Only eval, if ctx_skip is not SKIP_YES (Yegappan Lakshmanan). + +Patch 9.1.1547 +Problem: Wayland: missing ifdef +Solution: Add #ifdef around ch_log() call (Foxe Chen). + +Patch 9.1.1548 +Problem: filetype: OpenFGA files are not recognized +Solution: Detect *.fga files as fga filetype, include an fga filetype + plugin (Riley Bruins). + +Patch 9.1.1549 +Problem: filetype: pkl files are not recognized +Solution: Detect *.pkl files as pkl filetype, include a filetype plugin (Riley + Bruins). + +Patch 9.1.1550 +Problem: defaults: 'showcmd' is not enabled in non-compatible mode on Unix +Solution: Always enable 'showcmd' in non-compatible mode, drop it from + defaults.vim. + +Patch 9.1.1551 +Problem: [security]: path traversal issue in zip.vim (@ax) +Solution: Drop leading ../ on write of zipfiles, don't forcefully + overwrite existing files. + +Patch 9.1.1552 +Problem: [security]: path traversal issue in tar.vim (@ax) +Solution: Warn the user for such things, drop leading /, don't + forcefully overwrite files when writing temporary files, + refactor autoload/tar.vim + +Patch 9.1.1553 +Problem: Vim9: crash when accessing a variable in if condition (lxhillwind) +Solution: Skip indexing a list/tuple/dict/blob when short-circuiting an + if condition check (Yegappan Lakshmanan). + +Patch 9.1.1554 +Problem: Vim crashes during omnifunc completion inside the command-line + window ("q:") if the completion item attempts to open an "info" + preview window. This leads to a failed assert during execution. +Solution: Avoid opening preview windows while inside the command-line + window to prevent the crash (Girish Palya). + +Patch 9.1.1555 +Problem: completion: repeated insertion and deletion of complete + functions +Solution: Remove unnecessary insertion and deletion of leader text + during expansion of function present in 'complete' option + (Girish Palya). + +Patch 9.1.1556 +Problem: string handling in cmdexpand.c can be improved +Solution: Improve string manipulation in cmdexpand.c (John Marriott). + +Patch 9.1.1557 +Problem: not possible to anchor specific lines in difff mode +Solution: Add support for the anchoring lines in diff mode using the + 'diffanchor' option (Yee Cheng Chin). + +Patch 9.1.1558 +Problem: str2blob() treats NULL string and empty string differently +Solution: Treats a NULL string the same as an empty string (zeertzjq). + +Patch 9.1.1559 +Problem: tests: Test_popup_complete_info_01() fails when run alone. +Solution: Set buffer-local competeopt+=noinsert and add missing cleanup + in Test_popup_complete() (zeertzjq). + +Patch 9.1.1560 +Problem: configure: uses $PKG_CONFIG before it is defined +Solution: Define $PKG_CONFIG earlier in the script (Christoffer Aasted). + +Patch 9.1.1561 +Problem: configure: wayland test can be improved +Solution: Define $WAYLAND_CFLAGS, simplify the wayland tests + (Christoffer Aasted). + +Patch 9.1.1562 +Problem: close button "X" is visible in the non-GUI 'tabline', even + when the mouse is disabled +Solution: Only show the button when 'mouse' contains any of the flags + "anvi" (Girish Palya). + +Patch 9.1.1563 +Problem: The ruler disappears after typing the second character during + insert mode completion, even when completion messages are + suppressed ('shortmess' includes "c"). This makes the UI + appear inconsistent. +Solution: Ensure the ruler is restored during screen redraw when popup + completion is active (Girish Palya). + +Patch 9.1.1564 +Problem: Can open a popup window to a closing buffer, leading to the + buffer remaining open in the window after it's soon unloaded, + causing crashes. +Solution: Check b_locked_split when opening a popup window to an + existing buffer (Sean Dewar). + +Patch 9.1.1565 +Problem: configure: does not consider tiny version for wayland +Solution: Do not try to enable wayland for a tiny vim version + (Christoffer Aasted). + +Patch 9.1.1566 +Problem: self-referenced enum may not get freed +Solution: Test if it can be freed (Yegappan Lakshmanan). + +Patch 9.1.1567 +Problem: Crash when using inline diff mode (Ilya Grigoriev) +Solution: Set tp_diffbuf to NULL when skipping a diff block (Yee Cheng Chin). + +Patch 9.1.1568 +Problem: need a few more default highlight groups +Solution: Add Bold, Italic and BoldItalic default highlight groups + (Maxim Kim). + +Patch 9.1.1569 +Problem: tests: Vim9 tests can be improved +Solution: In Test_has_func_shortcircuit(), move the test functions to a + separate script (Yegappan Lakshmanan). + +Patch 9.1.1570 +Problem: Copilot suggested some improvements in cmdexpand.c (after v9.1.1556) +Solution: Use better variable names and comments (John Marriott). + +Patch 9.1.1571 +Problem: The CmdlineChanged event was firing unnecessarily, even when + the command line's content hadn't actually changed. +Solution: Add a check to compare the command-line buffer's state + before and after key processing. The `CmdlineChanged` event + now only triggers if the buffer's contents are genuinely + different (Girish Palya). + +Patch 9.1.1572 +Problem: expanding $var does not escape whitespace for 'path' +Solution: Escape whitespace when expanding 'path' option. (Miguel Barro). + +Patch 9.1.1573 +Problem: Memory leak when pressing Ctrl-D in cmdline mode (after 9.1.1571). +Solution: Free prev_cmdbuff before assigning to it. (zeertzjq). + +Patch 9.1.1574 +Problem: Dead code in mbyte.c +Solution: Delete the dead wcwidth()/iswprint() code (Damien Lejay). + +Patch 9.1.1575 +Problem: tabpanel not drawn correctly with wrapped lines + (utubo, after v9.1.1534) +Solution: Use Columns as width, not the frame width (Hirohito Higashi). + +Patch 9.1.1576 +Problem: cannot easily trigger wildcard expansion +Solution: Introduce wildtrigger() function (Girish Palya). + +Patch 9.1.1577 +Problem: Vim9: no generic support yet +Solution: Add support for generic functions, funcrefs and object/class + methods (Yegappan Lakshmanan). + +Patch 9.1.1578 +Problem: configure: comment still mentions autoconf 2.71 to generate + the configure script +Solution: Update the comment to use autoconf 2.72 instead (Yee Chin Cheng). + +Patch 9.1.1579 +Problem: Coverity complains about unchecked return value in + common_function() (after v9.1.1577) +Solution: Check the return value of skip_generic_func_type_args() + and return in case of an error (Yegappan Lakshmanan). + +Patch 9.1.1580 +Problem: possible memory leak in vim9type.c +Solution: Free tuple_types_ga if there was an error in + type_type_add_types() (Lidong Yan) + +Patch 9.1.1581 +Problem: possible memory leak in vim9generics.c +Solution: Free ret_free if ga_grow() fails and before returning + (Lidong Yan). + +Patch 9.1.1582 +Problem: style issue in vim9type.c and vim9generics.c + (after v9.1.1581 and v9.1.1580) +Solution: Update Style and place opening brace on a new line. + +Patch 9.1.1583 +Problem: Since Patch 9.1.1199 the gvim window no longer had _NET_WM_ICON + nor WM_HINTS icon information, for example when not using a + Gnome or KDE desktop (after v9.1.1199) +Solution: Check if the icon theme as used in Patch 1199 contains a gvim + icon. If so, set the window's icon from that. Otherwise + use the previous method (Olaf Seibert) + +Patch 9.1.1584 +Problem: using ints as bool +Solution: Include stdbool.h and start using bool type directly + (Hirohito Higashi). + +Patch 9.1.1585 +Problem: Wayland: gvim still needs GVIM_ENABLE_WAYLAND +Solution: Drop the GVIM_ENABLE_WAYLAND code, always enable both X11 and + Wayland GUI support (Christoffer Aasted) + +Patch 9.1.1586 +Problem: Vim9: can define an enum/interface in a function (lacygoill) +Solution: Give an error when defining an enum or an interface inside a + function (Yegappan Lakshmanan). + +Patch 9.1.1587 +Problem: Wayland: timeout not updated before select() +Solution: Always set timeval struct before select() (Foxe Chen). + +Patch 9.1.1588 +Problem: Vim9: cannot split dict inside command block (lacygoill) +Solution: Remove the current restriction (Yegappan Lakshmanan). + +Patch 9.1.1589 +Problem: Cannot disable cscope interface using configure, because in + feature.h FEAT_CSCOPE will always be enabled for huge builds + (chdiza) +Solution: Don't define FEAT_CSCOPE from configure script but set the + ENABLE_CSCOPE flag and check for the presence of that flag in + feature.h + +Patch 9.1.1590 +Problem: cannot perform autocompletion +Solution: Add the 'autocomplete' option value (Girish Palya) + +Patch 9.1.1591 +Problem: VMS support can be improved +Solution: Merge chagnes from Steven M. Schweda (Zoltan) + +Patch 9.1.1592 +Problem: Vim9: crash with classes and garbage collection + (Christian J. Robinson, after v9.1.1566) +Solution: When getting the references to an object, make sure the object + is valid (Yegappan Lakshmanan). + +Patch 9.1.1593 +Problem: Confusing error when compiling incomplete try block (lacygoill) +Solution: Give better error messages (Hirohito Higashi). + +Patch 9.1.1594 +Problem: completion: search completion throws errors, wrong placement + of pum menu with 'imi'=1 (berggeist) +Solution: Fix those errors (Girish Palya). + +Patch 9.1.1595 +Problem: Wayland: non-portable use of select() +Solution: Correctly set the timeval struct (Foxe Chen). + +Patch 9.1.1596 +Problem: tests: Test_search_wildmenu_iminsert() depends on help file + (after 9.1.1594). +Solution: Set buffer text using setline() instead of loading help file. + Add a test for another bug fixed by 9.1.1594 (zeertzjq). + +Patch 9.1.1597 +Problem: CI reports leaks in libgtk3 library +Solution: Add libgtk-3 library to leak suppression + +Patch 9.1.1598 +Problem: filetype: waybar config file is not recognized +Solution: Detect */waybar/config file as jsonc filetype (Furkan Sahin). + +Patch 9.1.1599 +Problem: :bnext doesn't go to unlisted help buffers when cycling + through help buffers (after 9.1.0557). +Solution: Don't check if a help buffer is listed (zeertzjq). + +Patch 9.1.1600 +Problem: diff: using diff anchors with hidden buffers fails silently +Solution: Give specific error message for diff anchors when using hidden + buffers (Yee Cheng Chin). + +Patch 9.1.1601 +Problem: Patch v8.1.0425 was wrong +Solution: Revert that Patch (Hirohito Higashi). + +Patch 9.1.1602 +Problem: filetype: requirements-*.txt files are not recognized +Solution: Detect requirements-*.txt files as requirements filetype + (Xudong Zheng). + +Patch 9.1.1603 +Problem: completion: cannot use autoloaded funcs in 'complete' F{func} + (Maxim Kim) +Solution: Make it work (Girish Palya). + +Patch 9.1.1604 +Problem: completion: incsearch highlight might be lost after search + completion (Hirohito Higashi) +Solution: Restore incsearch highlight after dismissing pum with Ctrl-E + (Girish Palya). + +Patch 9.1.1605 +Problem: Cannot specify scope for chdir() +Solution: Add optional scope argument (kuuote). + +Patch 9.1.1606 +Problem: filetype: a few more files are not recognized +Solution: Guess Mail, Info and Terminfo files by its content (lacygoill). + +Patch 9.1.1607 +Problem: :apple command detected as :append (dai475694450) +Solution: Disallow to define a custom command with lower-case letter, + correctly detect :insert/:change/:append ex commands + (Hirohito Higashi). + +Patch 9.1.1608 +Problem: No command-line completion for :unsilent {command}. +Solution: Add missing command arg completion (Doug Kearns). + +Patch 9.1.1609 +Problem: complete: Heap-buffer overflow with complete function (zeertzjq) +Solution: Do not let startcol become negative (Girish Palya). + +Patch 9.1.1610 +Problem: completion: hang (after 9.1.1471) or E684 (after 9.1.1410) + when 'tagfunc' calls complete(). +Solution: Check if complete() has been called immediately after getting + matches instead of in the next loop iteration (zeertzjq). + +Patch 9.1.1611 +Problem: possible undefined behaviour in mb_decompose(), when using the + same pointer as argument several times +Solution: Use separate assignments to avoid reading and writing the same + object at the same time (Áron Hárnási). + +Patch 9.1.1612 +Problem: Ctrl-G/Ctrl-T does not ignore the end search delimiter (irisjae) +Solution: Check if the pattern ends with a search delimiter and ignore + it, unless it is part of the pattern. + +Patch 9.1.1613 +Problem: tests: test_search leaves a few swapfiles behind +Solution: Use :bw! instead of :close to close the swapfile at the end of + the test. + +Patch 9.1.1614 +Problem: Vim9: possible variable type change when using closure in a + for loop (Maxim Kim) +Solution: Use unwind_locals(..., TRUE) (Yegappan Lakshmanan). + +Patch 9.1.1615 +Problem: diff format erroneously detected (Tomáš Janoušek) +Solution: Make the regex to detect normal diff format a bit stricter, + while at it, fix wrong test content from Patch v9.1.1606. + +Patch 9.1.1616 +Problem: xxd: possible buffer overflow with bitwise output + (after v9.1.1459, Xudong Cao) +Solution: Update LLNE_NO_COLOR macro definition for the max line output. + +Patch 9.1.1617 +Problem: Vim9: some error messages can be improved +Solution: Improve error messages when parsing generic function type + arguments (Yegappan Lakshmanan). + +Patch 9.1.1618 +Problem: completion: incorrect selected index returned from + complete_info() +Solution: Return the index into "items" and restore the previous + behaviour (Robert Muir). + +Patch 9.1.1619 +Problem: Incorrect E535 error message (after 9.1.1603). +Solution: Don't use transchar(), as the character is always printable + (zeertzjq). + +Patch 9.1.1620 +Problem: filetype: composer.lock and symfony.lock files not recognized +Solution: Detect composer.lock and symfony.lock files as json filetype + (Dietrich Moerman). + +Patch 9.1.1621 +Problem: When the popup menu (PUM) occupies more than half the screen + height, it flickers whenever a character is typed or erased. +Solution: A complete, non-hacky fix would require removing the + CmdlineChanged event from the loop and letting autocompletion + manage the process end-to-end. This is because screen redraws + after any cmdline change are necessary for other features to + work (Girish Palya). + +Patch 9.1.1622 +Problem: Patch v9.1.1432 causes performance regressions +Solution: Revert "Patch 9.1.1432 unicode correctly" (Yee Cheng Chin). + +Patch 9.1.1623 +Problem: Buffer menu does not handle unicode names correctly + (after v9.1.1622) +Solution: Fix the BMHash() function (Yee Cheng Chin) + +Patch 9.1.1624 +Problem: Cscope not enabled on MacOS +Solution: Remove #ifdef test for MacOS and always enable FEAT_CSCOPE on + Unix (Damien Lejay). + +Patch 9.1.1625 +Problem: Autocompletion slow with include- and tag-completion +Solution: Refactor ins_compl_interrupted() to also check for timeout, + further refactor code to skip outputting message when + performing autocompletion (Girish Palya). + +Patch 9.1.1626 +Problem: C-indent does not handle compound literals (@44100hertz, @Jorenar) +Solution: Detect and handle compound literal and structure + initialization (Anttoni Erkkilä). + +Patch 9.1.1627 +Problem: fuzzy-matching can be improved +Solution: Implement a better fuzzy matching algorithm (Girish Palya). + +Patch 9.1.1628 +Problem: fuzzy.c has a few issues +Solution: Use Vims memory management, update style (glepnir). + +Patch 9.1.1629 +Problem: Vim9: Not able to use more than 10 type arguments in a generic + function +Solution: Initialize the types after reading all the type arg variable + names (Yegappan Lakshmanan). + +Patch 9.1.1630 +Problem: tests: fuzzy buffer name completion test doesn't match + successfully (after 9.1.1627). +Solution: Update pattern to account for the change in case sensitivity. + Also mark Test_search_stat_option() as flaky as it can still + sometimes fail (zeertzjq). + +Patch 9.1.1631 +Problem: proto files are outdated +Solution: Regenerate proto files (Yegappan Lakshmanan). + +Patch 9.1.1632 +Problem: memory leak in fuzzy.c +Solution: Free fuzmatch, add a few minor refactors (glepnir) + +Patch 9.1.1633 +Problem: Search pattern shown incorrectly with negative offset (lkintact) +Solution: Don't prepend a '+' sign to a negative offset (zeertzjq). + +Patch 9.1.1634 +Problem: Clipboard code can be improved +Solution: Slightly refactor code (Foxe Chen). + +Patch 9.1.1635 +Problem: tabpanel: cannot drag inactive tabs (char101) +Solution: use end_visual_mode_keep_button() instead of end_visual_mode() + (Naruhiko Nishino). + +Patch 9.1.1636 +Problem: style issues +Solution: Fix indentation of function parameters exceeding 80 character + length (Yegappan Lakshmanan). + +Patch 9.1.1637 +Problem: FEAT_DIFF used in diff.pro +Solution: Remove it from the diff protocol file (Yegappan Lakshmanan). + +Patch 9.1.1638 +Problem: completion: not possible to delay the autcompletion +Solution: Add the 'autocompletedelay' option value (Girish Palya). + +Patch 9.1.1639 +Problem: During commandline completiom, popup window placement can be + incorrect when 'noselect' is present in 'wildmode' + (Shane-XB-Qian) +Solution: Disable "showtail" feature when 'noselect' is present. + +Patch 9.1.1640 +Problem: Unicode has deprecated some code-points +Solution: Update the digraph tables to align with the Unicode v16 + release (David Friant) + +Patch 9.1.1641 +Problem: a few compiler warnings are output +Solution: Fix compiler warnings (Yegappan Lakshmanan). + +Patch 9.1.1642 +Problem: configure: wrong C99 feature test +Solution: Update inverted C99 feature test logic (Damien Lejay). + +Patch 9.1.1643 +Problem: tabpanel: mouse code too complicated +Solution: Refactor code, adjust ifdefs (Hirohito Higashi). + +Patch 9.1.1644 +Problem: configure: doesn't separate CPPFLAGS and CFLAGS +Solution: Split CPPFLAGS and CFLAGS for pkg-config (Damien Lejay). + +Patch 9.1.1645 +Problem: fuzzy.c can be further improved +Solution: Fix memory leak and refactor it (glepnir). + +Patch 9.1.1646 +Problem: MS-Windows: completion cannot handle implicit drive letters +Solution: Consider paths like \folder and /folder as absolute (Miguel Barro). + +Patch 9.1.1647 +Problem: filetype: Cangjie files are not recognized +Solution: Detect *.cj files as cangjie filetype, include a syntax plugin + (WuJunkai2004) + +Patch 9.1.1648 +Problem: MS-Windows: some style issues with Patch v9.1.1646 +Solution: Fix typose and code style issues (zeertzjq). + +Patch 9.1.1649 +Problem: attrs allocation and fuzzy growarray could leak on early returns +Solution: Ensure proper cleanup of allocated memory on exit paths (glepnir). + +Patch 9.1.1650 +Problem: After scrolling a popup and then using popup_settext() with + fewer lines, the popup fails to resize properly because + firstline points beyond the new buffer content (lifepillar) +Solution: In popup_adjust_position(), validate that firstline doesn't + exceed buffer line count and reset to 0 (auto-position) if it + does (glepnir). + +Patch 9.1.1651 +Problem: Cannot use clientserver over Unix domain socket +Solution: Implement socketserver functionality (Foxe Chen). + +Patch 9.1.1652 +Problem: Cannot determine non-X11/Wayland clipmethods +Solution: Add the "gui" value to the 'clipmethod' option (Foxe Chen) + +Patch 9.1.1653 +Problem: Coverity complains about Null pointer dereference (after v9.1.1643) +Solution: Check that TabPageIdx is not Null. + +Patch 9.1.1654 +Problem: build failure when FEAT_DIFF is not defined (John Marriott) +Solution: Remove FEAT_DIFF in proto.h; define dummy type for + diffline_T and diffline_change_T when FEAT_DIFF is not defined + +Patch 9.1.1655 +Problem: Build-failure in do_mouse() (after v9.1.1653) +Solution: Add missing closing paren. + +Patch 9.1.1656 +Problem: MS-Windows: Patch v9.1.1652 breaks clipboard + (ddad431, after v9.1.1652) +Solution: Revert the Patch. + +Patch 9.1.1657 +Problem: Autocompletion adds delay (gcanat, char101, after v9.1.1638) +Solution: Temporarily disable autocomplation (Girish Palya). + +Patch 9.1.1658 +Problem: Missing includes for Wayland headers, when subfolder is used + (after v9.1.1644) +Solution: Add new $WAYLAND_CPPFLAGS (Christoffer Aasted). + +Patch 9.1.1659 +Problem: configure: uses AC_INIT without args +Solution: Add a comment explaining why AC_INIT has no args (Damien Lejay). + +Patch 9.1.1660 +Problem: Popups without border/padding/title don't flip position when + cursor is near bottom of screen, while decorated popups do + flip correctly. +Solution: Use original height instead of truncated height for position + inversion check, except for info popups to preserve existing + behavior (glepnir). + +Patch 9.1.1661 +Problem: Coverity finds a few issues in clientserver.c + (also by Tony Mechelynck) +Solution: Fix issues and warnings (Foxe Chen). + +Patch 9.1.1662 +Problem: Issues with proto files: missing or inconsistent prototypes. +Solution: Update ifdefs, move typedefs, fix prototype declaration + (Hirohito Higashi). + +Patch 9.1.1663 +Problem: xxd: 9.1.0023 introduced additional dependency +Solution: Remove non-native z/OS library call (David Seal). + +Patch 9.1.1664 +Problem: configure: can use any autocon +Solution: Use AC_PREREQ and require 2.71 (Damien Lejay). + +Patch 9.1.1665 +Problem: Outdated comment in eval.c. +Solution: Remove the comment, which is no longer true after 8.2.1672. + Also fix a typo in version9.txt (zeertzjq). + +Patch 9.1.1666 +Problem: no support for terminal primary device attributes +Solution: Add support for detecting the DA1 response from the terminal, + add the v:termda1 variable and the 't_Ms' option for the + OSC 52 command format (Foxe Chen). + +Patch 9.1.1667 +Problem: Another outdated comment in eval.c (after 9.1.1665). +Solution: Remove that comment as well. Add a few more tests for mapnew() + that fail without Patch 8.2.1672 (zeertzjq). + +Patch 9.1.1668 +Problem: items() does not work for Blobs +Solution: Extend items() to support Blob (Yegappan Lakshmanan). + +Patch 9.1.1669 +Problem: Vim script: no support for URI de-/encoding (ubaldot) +Solution: Add the uri_encode() and uri_decode() functions + (Yegappan Lakshmanan) + +Patch 9.1.1670 +Problem: completion: autocomplete breaks second completion (gravndal) +Solution: Fix the autocomplete bug (Girish Palya). + +Patch 9.1.1671 +Problem: configure: missing comment about AC_CONFIG_SRCDIR +Solution: Add comment explaining the use of AC_CONFIG_SRCDIR (Damien Lejay). + +Patch 9.1.1672 +Problem: completion: cannot add timeouts for 'cpt' sources + (Evgeni Chasnovski) +Solution: Add the 'autocompletetimeout' and 'completetimeout' options + (Girish Palya). + +Patch 9.1.1673 +Problem: if_python: still support for Python 1 +Solution: Drop outdated code (Hirohito Higashi). + +Patch 9.1.1674 +Problem: Patch v9.1.1666 causes problems on kitty (Sami Farin) +Solution: Remove Ms value from termcodes (Foxe Chen). + +Patch 9.1.1675 +Problem: MS-Windows: Makefiles can be refactored +Solution: Refactor using a common tools.mak, make some style changes + (RestorerZ). + +Patch 9.1.1676 +Problem: completion: long line shown twice (Maxim Kim) +Solution: Fix the issue, disable an incorrect test (Girish Palya). + +Patch 9.1.1677 +Problem: wrong ifdef in message.c +Solution: change it to #ifndef MSWIN (Damien Lejay). + +Patch 9.1.1678 +Problem: Amiga: cannot handle large undo files +Solution: Remove the existing restriction as it was only valid for + classic Amiga (Damien Lejay). + +Patch 9.1.1679 +Problem: unclear what key causes CmdlineLeave autocommand +Solution: Set |v:char| to the key (Girish Palya). + +Patch 9.1.1680 +Problem: MS-Windows: possible buffer-under run in if_cscope + cs_pathcomponents() (Murali Aniruddhan) +Solution: Fix the loop and do not decrement the pointer twice. + +Patch 9.1.1681 +Problem: tests: no test for actually moving cursor when menu is not + open with 'autocompletedelay'. +Solution: Use first in the test. Also remove two unnecessary s + in completion timeout test (zeertzjq). + +Patch 9.1.1682 +Problem: tests: Test_wildtrigger_update_screen() creates an unused + mapping (after 9.1.1621). +Solution: Remove the mapping. Also use blank lines more consistently in + test_cmdline.vim screendump tests (zeertzjq). + +Patch 9.1.1683 +Problem: xxd: Avoid null dereference in autoskip colorless +Solution: Verify that colors is not null (Joakim Nohlgård). + +Patch 9.1.1684 +Problem: min()/max() does not handle float data types (ubaldot) +Solution: Extend min() and max() to every comparable type (LemonBoy). + +Patch 9.1.1685 +Problem: Missing changes from PR 18068 +Solution: Include the missing changes (Girish Palya). + +Patch 9.1.1686 +Problem: if_ruby: unknown pragma when not using gcc +Solution: only use GCC pragma, when using GCC (Cthulhux). + +Patch 9.1.1687 +Problem: filetype: autoconf filetype not always correct +Solution: Detect aclocal.m4 as config filetype, detect configure.ac as + config filetype, fall back to POSIX m4 (Damien Lejay). + +Patch 9.1.1688 +Problem: potential buffer overrun in bufwrite.c +Solution: Use a temporary variable (John Marriott). + +Patch 9.1.1689 +Problem: CmdlineChanged not triggered by +Solution: Use STRCMP() instead of STRNCMP() (Shougo Matsushita). + +Patch 9.1.1690 +Problem: Missing recursion guard in dos/unix_expandpath() +Solution: Add guard variables (ashamedbit). + +Patch 9.1.1691 +Problem: over-allocation in ga_concat_strings() +Solution: Fix ga_concat_strings() and only allocate n-1 separator length + bytes (Damien Lejay). + +Patch 9.1.1692 +Problem: global_functions are not constant +Solution: Place global_functions[] in read-only memory (Damien Lejay). + +Patch 9.1.1693 +Problem: tests: test_filetype fails in shadow dir (after v9.1.9.1.1687) +Solution: Use a custom test that does not rely on configure.ac + being existing in the upper directory tree. + +Patch 9.1.1694 +Problem: filetype: Buck eXtension Lang files are not recognized +Solution: Detect *.bxl files as bzl filetype. (Jade Lovelace) + +Patch 9.1.1695 +Problem: Need more Vim script specific tests +Solution: Add more tests (Yegappan Lakshmanan). + +Patch 9.1.1696 +Problem: getwininfo() has logic for getting the tabnr of a local popup + window, but due to only breaking from the inner loop, tp is + eventually set to NULL, so tabnr is always 0. +Solution: Break out of both loops, continue to use 0 for global popup + windows (Sean Dewar). + +Patch 9.1.1697 +Problem: tests: no test for aclocal.m4 (after v9.1.1693) +Solution: Add a test that aclocal.m4 is detected as config filetype. + +Patch 9.1.1698 +Problem: Some error numbers are not documented (Restorer) +Solution: Document missing error numbers (Yegappan Lakshmanan). + +Patch 9.1.1699 +Problem: Fuzzy completion disabled for 'findfunc' and customlist +Solution: Remove those cases from cmdline_fuzzy_completion_supported() + because it is supported (Maxim Kim). + +Patch 9.1.1700 +Problem: a pattern that involves a backref on a different line does not + match when 'ignorecase' is set (QiWei, after v9.1.0645) +Solution: Use MB_STRNICMP when ignorecase is set, fix tests to close + swapfiles. + +Patch 9.1.1701 +Problem: tests: failure on CI with GUI and ASAN in test_edit.res + (Hirohito Higashi) +Solution: Disable the test for that specific situation in CI, close + swapfiles. + +Patch 9.1.1702 +Problem: tests: test_edit still fails on CI (after v9.1.1701) +Solution: Fix the skip condition. + +Patch 9.1.1703 +Problem: Cannot react to terminal OSC responses +Solution: Allow TermResponseAll to be triggered by Terminal OSC + responses (Foxe Chen). + +Patch 9.1.1704 +Problem: Cannot determine non-X11/Wayland clipmethods +Solution: Add the "gui" value to the 'clipmethod' option (Foxe Chen). + +Patch 9.1.1705 +Problem: time.h include is available on all platforms +Solution: Remove ifdef guards and simply include it in all source files, + get rid of double include in spellfile.c (Damien Lejay). + +Patch 9.1.1706 +Problem: MS-Windows: Compile error when building with if_ruby + (Christian Robinson, after v9.1.1704) +Solution: Do not define gettimeofday() if ruby interface is compiled in + (Foxe Chen). + +Patch 9.1.1707 +Problem: diff.pro contains #ifdefs +Solution: Remove unintentionally added ifdefs (Hirohito Higashi). + +Patch 9.1.1708 +Problem: tests: various tests can be improved +Solution: Use string interpolation to concatenate strings in + test_winfixbuf, check for specific errors in assert_fails() + (Yegappan Lakshmanan). + +Patch 9.1.1709 +Problem: filetype: kyaml files are not recognized +Solution: Detect *.kyml files as yaml filetype (Volodymyr Chernetskyi). + +Patch 9.1.1710 +Problem: Compile warnings in clipboard.c (xvim64, after v9.1.1704) +Solution: Remove returns from void functions (Foxe Chen). + +Patch 9.1.1711 +Problem: Missing type cast in clipboard.c + (Yegappan Lakshmanan, after v9.1.1704) +Solution: Add back the type cast (Foxe Chen). + +Patch 9.1.1712 +Problem: screen not redrawn properly on t_RB response (after v9.1.1703) +Solution: Call redraw_asap() if necessary (Julio B). + +Patch 9.1.1713 +Problem: filetype: fvwm2m4 files are no longer recognized (after 9.1.1687). +Solution: Add a special case in m4 filetype detection (zeertzjq). + +Patch 9.1.1714 +Problem: completion: wildmode=longest:full selects wrong item (zeertzjq) +Solution: Fix issue, refactor ex_getln.c slightly (Girish Palya). + +Patch 9.1.1715 +Problem: Some functions need to be re-ordered +Solution: Re-order and move functions around favoring mch_*() functions + inside os_*.c files, Change scope of dos_expandpath() to + global instead of static (Hirohito Higashi). + +Patch 9.1.1716 +Problem: The code inside an ifdef was indented incorrectly. +Solution: Adjusted the indentation by one level (glepnir). + +Patch 9.1.1717 +Problem: filetype: AWS cli alias file is not recognized +Solution: Detect .aws/cli/alias as confini filetype (Volodymyr Chernetskyi). + +Patch 9.1.1718 +Problem: filetype: kubectl config file is not recognized +Solution: Detect .kube/kubectl as yaml filetype (Volodymyr Chernetskyi). + +Patch 9.1.1719 +Problem: socket server code can be improved +Solution: Refactor code, get rid of gettimeofday() and use ELAPSED_ + macros (Foxe Chen). + +Patch 9.1.1720 +Problem: Using gettimeofday() for parsing OSC responses +Solution: Use ELAPSED_ macros instead (Foxe Chen). + +Patch 9.1.1721 +Problem: Defining a global gettimeofday() function causes conflicts if + gettimeofday() is already defined. +Solution: Revert globalized gettimeofday() function (Hirohito Higashi). + +Patch 9.1.1722 +Problem: Compiler may optimize away clearing of crypt key +Solution: Use sodium_memzero() if available, else use memset() using a + volatile function pointer (ashamedbit). + +Patch 9.1.1723 +Problem: Missing ifdefs (after v9.1.1719) +Solution: Add ifdef ELAPSED_FUNC (Foxe Chen). + +Patch 9.1.1724 +Problem: Compiler warning about ununitialized variable in ex_docmd. +Solution: Initialize result variable (mityu). + +Patch 9.1.1725 +Problem: Wayland code can be improved +Solution: Refactor Wayland Clipboard code (Foxe Chen). + +Patch 9.1.1726 +Problem: Patch v9.1.1725 causes problems +Solution: Revert the Patch for now. + +Patch 9.1.1727 +Problem: Nextstep support still included +Solution: Deprecate Nextstep code and undef corresponding feature flag. + +Patch 9.1.1728 +Problem: termdebug: cannot evaluate visual selected expression +Solution: Add support for visual mode, mapped to K by default (bennyyip). + +Patch 9.1.1729 +Problem: CI is not run with clang 21 +Solution: Update CI to v21, fix a few warnings that are uncovered when + using clang 21 (Philip H). + +Patch 9.1.1730 +Problem: filetype: vivado journal/log files are not recognized +Solution: Detect vivado*.{jou,log} as tcl filetype (Wu Zhenyu). + +Patch 9.1.1731 +Problem: Not using const qualifier +Solution: Mark the opchars array const. + +Patch 9.1.1732 +Problem: filetype: .inc file detection can be improved +Solution: Update filetype detection for Pascal and BitBake code + (Martin Schwan). + +Patch 9.1.1733 +Problem: tests: failure when remote_server() fails +Solution: Catch E240 error when calling remote_server(), Fix syntax + error in test_wayland.vim. + +Patch 9.1.1734 +Problem: Memory leak when allocating match fails +Solution: Initialize m to NULL and centralize cleanup via goto fail to + avoid leaks on early returns (Damien Lejay). + +Patch 9.1.1735 +Problem: Cygwin Makefile still checks for Win XP version +Solution: Remove check for WINVER >= 0x600 in Make_cyg_ming.mak + (Mao-Yining). + +Patch 9.1.1736 +Problem: Cannot detect using kitty protocol +Solution: Handle and detect Kitty keys when using the trailing "~" byte. + +Patch 9.1.1737 +Problem: Patch v9.1.1714 introduce a regression for wildmenu (zeertzjq) +Solution: Restore behavior of "longest" in 'wildmode' (Girish Palya). + +Patch 9.1.1738 +Problem: cmdline-autocompletion breaks history navigation (ddad431) +Solution: Support history navigation in cmdline autocompletion (Girish + Palya). + +Patch 9.1.1739 +Problem: Matches may be listed twice with wildmode=longest,list when + "longest" doesn't change command line (after 9.1.1737). +Solution: Set did_wild_list when trying "list" after "longest" (zeertzjq). + +Patch 9.1.1740 +Problem: Memory leak with wildmode=longest,full and wildoptions=pum + (after 9.1.1737). +Solution: Avoid using showmatches() and WILD_NEXT together. Also fix + wildmode=longest,noselect:full selecting wrong item (zeertzjq). + +Patch 9.1.1741 +Problem: Regression with kitty protocol and trailing byte "u" + (chdiza, after v9.1.1736) +Solution: Check that trailing byte "~" is present. + +Patch 9.1.1742 +Problem: complete: preinsert does not work well with preinsert +Solution: Make "preinsert" completeopt value work with autocompletion + (Girish Palya). + +Patch 9.1.1743 +Problem: Haiku: no full-screen support +Solution: Add support for toggling full-screen using the keyboard (rymdbar) + +Patch 9.1.1744 +Problem: tests: Test_skip_wildtrigger_hist_navigation() may fail (zeertzjq). +Solution: Correct test to validate intended behavior (Girish Palya). + +Patch 9.1.1745 +Problem: tabpanel: not properly redraw after wildmenu (ddad431) +Solution: Mark tabpanel to be redrawn (Hirohito Higashi). + +Patch 9.1.1746 +Problem: Missing Null ptr check in cs_find_common() +Solution: Return when tmp pointer is null (ashamedbit). + +Patch 9.1.1747 +Problem: completion: redo (.) broken with preinsert and autocompletion +Solution: Make redo (.) work with preinsert and autocompletion (Girish Palya). + +Patch 9.1.1748 +Problem: macOS: Default scheduler priority too low +Solution: Explicitly set TASK_DEFAULT_APPLICATION scheduler priority + to improve responsiveness (Luna Razzaghipour). + +Patch 9.1.1749 +Problem: leaking memory in cs_find_common() (after v9.1.1746) +Solution: Also free nummatches before returning. + +Patch 9.1.1750 +Problem: completion: preinserted text highlighed using ComplMatchIns +Solution: Use highlighting group PreInsert and update the documentation + (Girish Palya). + +Patch 9.1.1751 +Problem: potential buffer-overflow in find_pattern_in_path() +Problem: Verify ptr p has enough room before adding ins_compl_len(). + +Patch 9.1.1752 +Problem: tests: No test when deleting text after autocompletion with + preinsert did complete an entry +Solution: Verify, that after deletion autocompletion does not reinsert + the deleted text. Note: the actual issue was fixed with v9.1.1750 + (Girish Palya). + +Patch 9.1.1753 +Problem: defaults: 'diffopt' option value can be improved +Solution: Update diffopt defaults to include "indent-heuristic" and + "inline:char" (Yee Cheng Chin) + +Patch 9.1.1754 +Problem: :helptags doesn't skip examples with syntax (Evgeni Chasnovski) +Solution: Check for examples with syntax (zeertzjq). + +Patch 9.1.1755 +Problem: filetype: generic log files are not recognized +Solution: Detect *.log files as log filetype, include simple log syntax + script (Mao-Yining). + +Patch 9.1.1756 +Problem: termdebug: Need a few more user commands +Solution: Add the :RunOrContinue and the :ToggleBreak user commands + (bennyyip) + +Patch 9.1.1757 +Problem: The colorresp plugin causes additional redraws + (Linwei, after v9.1.1703) +Solution: Move the code back into the C core and get rid of the vim + plugin (Foxe Chen). + +Patch 9.1.1758 +Problem: Diff mode crashes when adding text property in autocommand + (after 9.1.1557). +Solution: Only restore ML_EMPTY memline flag, ignore the others (zeertzjq). + +Patch 9.1.1759 +Problem: filetype: generic log detection is too disturbing (after v9.1.1755) +Solution: Revert setting log filetype. + +Patch 9.1.1760 +Problem: wrong proto file for insexpand.pro +Solution: Update insexpand.pro (Hirohito Higashi). + +Patch 9.1.1762 +Problem: completion: selected item not cleared on backspace when + 'autocomplete' is set +Solution: Clear the selected item (Girish Palya). + +Patch 9.1.1763 +Problem: filetype: kitty config files are not recognized +Solution: Detect */kitty/*.conf as kitty filetype, include a syntax + script (Shawon). + +Patch 9.1.1764 +Problem: filetype: CODEOWNERS file not recognized +Solution: Detect CODEOWNERS file as codeowners filetype, include a + syntax and filetype plugin (Jon Parise). + +Patch 9.1.1765 +Problem: f_isnan() and f_isinf() do not correctly initialize rettv type +Solution: Initialize them with type: VAR_NUMBER and value 0 (Damien Lejay). + +Patch 9.1.1766 +Problem: Vim9: some Vim9 functions do not handle null_string correctly + and may crash Vim (kennypete). +Solution: Check for null_string correctly in the searchpair() and + substitute() functions (Yegappan Lakshmanan). + +Patch 9.1.1767 +Problem: Patch v9.1.1765 was wrong +Solution: Roll back the change, it's correct to have call_func() initialize + the type, so that not each function has to do this on its own. + +Patch 9.1.1768 +Problem: Makefile does not uninstall global plugins (after v9.1.1757) +Solution: Uninstall global plugins before installing them, so that old files + are not carried around and loaded when no longer used. + +Patch 9.1.1769 +Problem: completion: "preinsert" insert wrong word with 'smartcase' and + 'autocomplete' +Solution: Add compare completed item with the leader (Girish Palya). + +Patch 9.1.1770 +Problem: Vim9: wrong behaviour with trailing comments in command blocks + (balki) +Solution: Correctly skip over trailing comments (Yegappan Lakshmanan). + +Patch 9.1.1771 +Problem: complete: some redraw issues with 'autocomplete' +Solution: Fix the issues (Girish Palya). + +Patch 9.1.1772 +Problem: completion: inconsistent selection of first item with + 'autocomplete' (Tomasz N) +Solution: Check for 'autocomplete' option in ins_compl_new_leader() + (Girish Palya). + +Patch 9.1.1773 +Problem: Crash in BufLeave/WinLeave/TabLeave when closing window after + BufUnload closes all other windows in the tab page. +Solution: Avoid duplicate BufLeave/WinLeave events. Trigger TabLeave + before removing the buffer (zeertzjq). + +Patch 9.1.1774 +Problem: cannot calculate sha256() of a Blob +Solution: Change sha256() to accept a Blob or String argument (thinca). + +Patch 9.1.1775 +Problem: filetype: Mamba configuration files are not recognized +Solution: Detect .mambarc and mambarc as yaml filetype (Samuel Huang). + +Patch 9.1.1776 +Problem: "adding" expansion doesn't work with cfc=keyword. +Solution: Remove incorrect assignment to compl_cont_status. Don't use + fuzzy collection in "adding" status (zeertzjq). + +Patch 9.1.1777 +Problem: Mouse click to open fold doesn't work with utf-8 "foldclose" + chars (Balki) +Solution: Use ScreenLinesUC[off] if it is set (zeertzjq). + +Patch 9.1.1778 +Problem: sha256() treats empty blob and null blob differently + (after 9.1.1774). +Solution: Handle null blob the same as empty blob (zeertzjq). + +Patch 9.1.1779 +Problem: completion: 'autocomplete' cannot be enabled per buffer (Tomasz N) +Solution: Make 'autocomplete' global or local to buffer (Girish Palya). + +Patch 9.1.1780 +Problem: mbyte contains overlapping list of utf_classes table +Solution: Update table to contain non-overlapping list (Yuta Yamamoto). + +Patch 9.1.1781 +Problem: some functions could be defined static +Solution: Change function definitions and make them static + (Yegappan Lakshmanan). + +Patch 9.1.1782 +Problem: buffer-listener callbacks may not match buffer content, since + they are buffered until the screen is updated. +Solution: Allow to handle buffer-callbacks un-buffered, meaning to + handle those changes as soon as they happen (Paul Ollis). + +Patch 9.1.1783 +Problem: ins_compl_leader() defined too far away from + ins_compl_leader_len() (after 9.1.1781). +Solution: Move ins_compl_leader() just before ins_compl_leader_len(). Add + missing "static" to eval0_simple_funccal() definition (zeertzjq). + +Patch 9.1.1784 +Problem: Wayland code can be improved +Solution: Refactor Wayland Clipboard code (Foxe Chen). + +Patch 9.1.1785 +Problem: typo in comment in change.c (after v9.1.1782) +Solution: Fix typo in comment in change.c (Christ van Willegen). + +Patch 9.1.1786 +Problem: Compile error with clipboard (lacyggoill, after v9.1.1784) +Solution: Add $WAYLAND_SRC as dependency for clipboard.c in Makefile + (Foxe Chen). + +Patch 9.1.1787 +Problem: filetype: not all Sway config files are recognized +Solution: Detect files within /sway/config.d/* as swayconfig filetype + (Felix Pehla). + +Patch 9.1.1788 +Problem: Vim9: can declare a void variable (Ernie Rael) +Solution: Disallow such variable declaration (Yegappan Lakshmanan). + +Patch 9.1.1789 +Problem: MS-Windows: using wrong check for bold font (after v9.1.1347) +Solution: Test if lf.lfWeight == FW_BOLD instead of a simple truthiness + test (Shay). + +Patch 9.1.1790 +Problem: completion: Enter does not insert match with "noinsert" + (Sergey Vlasov) +Solution: Check for compl_shown_match instead of compl_selected_item + (zeertzjq). + +Patch 9.1.1791 +Problem: type(void) throws an internal error (atitcreate) +Solution: Return proper error message (Yegappan Lakshmanan). + +Patch 9.1.1792 +Problem: List of changes not protected from changes when processing + listeners (after v9.1.1782) +Solution: Fully lock changes list for listener callbacks (Paul Ollis). + +Patch 9.1.1793 +Problem: Link error when build without channel feature + (lindhobe, after v9.1.1774) +Solution: Remove ifdef FEAT_JOB_CHANNEL around check_for_string_or_blob_arg(). + +Patch 9.1.1794 +Problem: configure: terminfo test does not work with musl + (T3rm1, after v9.9.1.0837) +Solution: Include term.h in configure script, add forward declarations, + in case headers are not found. + +Patch 9.1.1795 +Problem: Vim9: popup_show() may return void +Solution: Modify popup_show() to return -1 for an invalid popup window + id (Yegappan Lakshmanan). + +Patch 9.1.1796 +Problem: Wrong cursor position with wrapped "after" virtual text and + 'showbreak' (Ben Jackson) +Solution: Count size of 'showbreak' in wrapped "after" virtual text in + line size (zeertzjq). + +Patch 9.1.1797 +Problem: completion: autocompletion can be improved +Solution: Add support for "longest" and "preinsert" in 'autocomplete'; + add preinserted() (Girish Palya) + +Patch 9.1.1798 +Problem: Wrong display with 'smoothscroll' and long wrapped virtual + text at EOL. +Solution: Handle w_skipcol inside long wrapped virtual text at EOL (zeertzjq). + +Patch 9.1.1799 +Problem: completion: crash with autcompletion (Maxim Kim) +Solution: Rework remove_old_matches (Girish Palya). + +Patch 9.1.1800 +Problem: completion: strange behaviour with 'ac' + completeopt=longest,preinsert (zeertzjq) +Solution: Let preinsert take precedence (Girish Palya). + +Patch 9.1.1801 +Problem: Vim9: misleading error when extending dictionary (lacygoill). +Solution: Give a proper error message when a Dict type is used with a + compound operator (Yegappan Lakshmanan). + +Patch 9.1.1802 +Problem: 'nowrap' in a modeline may hide malicious code. +Solution: Forcibly use '>' as 'listchars' "extends" if 'nowrap' was set + from a modeline (zeertzjq). + +Patch 9.1.1803 +Problem: Amiga: build errors +Solution: Update preprocessor conditionals (Ola Söder). + +Patch 9.1.1804 +Problem: Wrong indentation of nested ifdefs in findfile.c +Solution: Update indentation (Ola Söder). + +Patch 9.1.1805 +Problem: Amiga: Missing build date in version string +Solution: Set build date in CFLAGS in Makefile (Ola Söder). + +Patch 9.1.1806 +Problem: Missing PROTO defines +Solution: Update ifdefs, update Makefile dependencies, updated proto files + (Hirohito Higashi). + +Patch 9.1.1807 +Problem: :set doesn't clear local insecure flag like :setlocal does. +Solution: Also clear the local insecure flag when using :set (zeertzjq). + +Patch 9.1.1808 +Problem: Option insecure flags not copied when splitting window. +Solution: Move window-local insecure flags to winopt_T and copy them + properly (zeertzjq). + +Patch 9.1.1809 +Problem: winclip.pro included in PRO_AUTO +Solution: Remove it from PRO_AUTO since it is already defined in + PRO_MANUAL (Hirohito Higashi). + +Patch 9.1.1810 +Problem: completion: "longest" doesn't work for manual completion when + 'autocomplete' is on (after 9.1.1800). +Solution: Only reset compl_get_longest when enabling autocompletion (zeertzjq) + +Patch 9.1.1811 +Problem: Amiga: Initialization of random buffer can be improved +Solution: Use RANDOM device when available (Ola Söder) + +Patch 9.1.1812 +Problem: completion: flicker with slow LSPs +Solution: Disable flushing the changed text (Girish Palya). + +Patch 9.1.1813 +Problem: MS-Windows: title bar is always white +Solution: Set_caption() and set the title bars color to the Normal + highlighting background (Mao-Yining) + +Patch 9.1.1814 +Problem: Patch v9.1.1812 causes crashes +Solution: Revert v9.1.1812 + +Patch 9.1.1815 +Problem: file mode changes in os_amiga.pro to 644 (RestorerZ after v9.1.1811) +Solution: Fix the permissions of proto/os_amiga.pro to 644 (Hirohito Higashi). + +Patch 9.1.1816 +Problem: existing icon files are dated +Solution: Update and remake those icons using 256 colors (RestorerZ). + +Patch 9.1.1817 +Problem: popup: there are some position logic bugs +Solution: Refactor position logic and fix a few bugs (Girish Palya). + +Patch 9.1.1818 +Problem: possible crash when calculating topline in diff.c (youngmith) +Solution: Check for pointer being Null before accessing it. + +Patch 9.1.1819 +Problem: Cannot configure the inner foldlevel indicator for the + foldcolumn +Solution: Add "foldinner" suboption value to the 'fillchar' option + (Maria José Solano). + +Patch 9.1.1820 +Problem: completion: some issues with 'acl' when "preinsert" and + "longest" is in 'completeopt' (musonius, after v9.1.1638) +Solution: Fix various issues (see details below) (Girish Palya). + +Patch 9.1.1821 +Problem: filetype: Not all PKL files are recognized +Solution: Detect *.pcf as pkl filetype, detect using the pkl-lsp:// + protocol as pkl filetype, include PKL syntax script (Jan Claußen). + +Patch 9.1.1822 +Problem: Makefile still supports Perl < 5.005 +Solution: Remove support for Perl < 5.005, it's long been obsolete + (Hirohito Higashi) + +Patch 9.1.1823 +Problem: diff: w_topline may be invalidated +Solution: Update lnum in diff_set_topline() (Yee Cheng Chin). + +Patch 9.1.1824 +Problem: tests: no test for displaying 'foldcolumn' with Unicode + "foldinner" in 'fillchars'. +Solution: Add a few more test cases. Also fix misplaced "foldinner" + entry in version9.txt (zeertzjq). + +Patch 9.1.1825 +Problem: completion: flicker when LSP server is slow +Solution: reinsert leader text before invoking user function (Girish Palya). + +Patch 9.1.1826 +Problem: Patch v9.1.1230 causes confusion about Ctrl-C behaviour + (kuuote, after v9.1.1230) +Solution: Revert the behaviour, keep the old behaviour. + +Patch 9.1.1827 +Problem: completion: v9.1.1797 broke Ctrl-Y behaviour + (ddad431, after v9.1.1797) +Solution: Restore correct behaviour (Girish Palya). + +Patch 9.1.1828 +Problem: local variables shadowed by import names +Solution: Check if a local variable exists before handling imports (thinca). + +Patch 9.1.1829 +Problem: filetype: KerML and SysML files are not recognized +Solution: Detect *.kerml as kerml filetype, detect *.sysml as sysml + filetype, include a kerml and sysml filetype plugin + (Daumantas Kavolis). + +Patch 9.1.1830 +Problem: MS-Windows: Dark mode titlebar is not configurable (after v9.1.1813) +Solution: Revert Patch v9.1.1813 + +Patch 9.1.1831 +Problem: vertical separator of 'winfixwidth' windows may remain if they + become right-most windows from closing windows to the right. +Solution: Don't implicitly rely on frame_new_width to fix vseps, as the + call may be skipped for 'winfixwidth' windows to preserve + their width; do it explicitly in winframe_remove (Sean Dewar). + +Patch 9.1.1832 +Problem: if_perl: contains references to legacy if_perlsfio.{c,pro} and + USE_SFIO +Solution: Remove those references (Hirohito Higashi). + +Patch 9.1.1833 +Problem: completion: fuzzy candidates are not sorted (ddad431) +Solution: Always sort fuzzy candidates (Girish Palya). + +Patch 9.1.1834 +Problem: MS-Windows: not possible to highlight the title bar +Solution: Make the title/caption bar configurable by introducing the + 'go-C' option value which allows to highlight it using the + TitleBar and TitleBarNC highlighting groups (Mao-Yining). + +Patch 9.1.1835 +Problem: not possible to style popup borders globally +Solution: Add the 'pumborder' option (Girish Palya). + +Patch 9.1.1836 +Problem: 'cursorlineopt' "screenline" isn't redrawn when moving cursor + and then using line("w0") and :retab that does nothing. +Solution: Call redraw_for_cursorcolumn() when setting a valid w_virtcol + (zeertzjq). + +Patch 9.1.1837 +Problem: tests: Test_plugin_evaluate_in_popup() fails on 32bit arch + (James McCoy) +Solution: Instead of evaluating the ptr, let's evaluate just the pointer + content, skipping printing the pointer address. + +Patch 9.1.1838 +Problem: proto files out of sync +Solution: Update proto files (Hirohito Higashi). + +Patch 9.1.1839 +Problem: Window may have wrong height if resized from another tabpage. +Solution: Improve check for whether a tabline has been added (zeertzjq). + +Patch 9.1.1840 +Problem: Generating prototype files does not work on all platforms +Solution: Rework prototypes generation using python instead of cproto, + enable it in CI to test it for each PR (Hirohito Higashi). + +Patch 9.1.1841 +Problem: Patch 9.1.1840 adds python build dependency (chdizza) +Solution: Update dependencies (Hirohito Higashi). + +Patch 9.1.1842 +Problem: MS-Windows: build failure when mzscheme is included + (dertuxmalwieder, after v9.1.1838) +Solution: skip specific section when PROTO is defined (Hirohito Higashi). + +Patch 9.1.1843 +Problem: tests: Test_search_stat_option() may fail on slow systems +Solution: test_search_stat: Extend searchcount() timeout if the test is + being re-run due to flakiness (James McCoy). + +Patch 9.1.1844 +Problem: Makefile: dependencies not updated (Hirohito Higashi) +Solution: Update Dependencies after v9.1.1841. + +Patch 9.1.1845 +Problem: Makefile: Missing dependency on osdef.h +Solution: Add explicit dependency on auto/osdef.h. + +Patch 9.1.1846 +Problem: Build failure when building without wayland + (bennyyip, after v9.1.1844) +Solution: Update Makefile dependencies again, remove wayland dependencies for + clipboard.c. + +Patch 9.1.1847 +Problem: No cmdline completion for :echoconsole, :echowindow and second + expression after :echoerr. +Solution: Set EXPAND_EXPRESSION for :echoconsole and :echowindow, and + check for multiple expressions after :echoerr (zeertzjq). + +Patch 9.1.1848 +Problem: A few typos in the code +Solution: Fix typos (zeertzjq). + +Patch 9.1.1849 +Problem: CTRL-F and CTRL-B don't work in more prompt +Solution: Make CTRL-F and CTRL-B scroll by a screen down/up + (Bjoern Foersterling) + +Patch 9.1.1850 +Problem: completion: not triggered after i_Ctrl-W/i_Ctrl-U +Solution: Trigger autocomplete when entering Insert mode (Girish Palya). + +Patch 9.1.1851 +Problem: memory leak in heredoc_get() +Solution: Free "str" if list_append_string() fails (Lidong Yan). + +Patch 9.1.1852 +Problem: vim9class: fix memory leak in parse_member() +Solution: Free evalarg before returning (Lidong Yan). + +Patch 9.1.1853 +Problem: Ctrl-F and Ctrl-B at more prompt not working with kitty + keyboard protocol or modifyOtherKeys (after v9.1.1849). +Solution: Call merge_modifyOtherKeys() in get_keystroke() (zeertzjq). + +Patch 9.1.1854 +Problem: unnecessary code in optionstr.c +Solution: Remove it (Hirohito Higashi). + +Patch 9.1.1855 +Problem: Makefile: using non-portable syntax (Jonathan Schleifer) +Solution: Remove duplicate parenthesis. + +Patch 9.1.1856 +Problem: cannot style popup window (border, shadow, etc) +Solution: Extend the 'completepopup' option with additional properties + (Girish Palya). + +Patch 9.1.1857 +Problem: Missing clipboard provider support (lilydjwg) +Solution: Add clipboard provider feature (Foxe Chen). + +Patch 9.1.1858 +Problem: v:register not reset after Visual mode command (laktak). +Solution: Reset v:register if Visual mode was active before + do_pending_operator() (zeertzjq). + +Patch 9.1.1859 +Problem: completion: whitespace not cleared with 'ai' +Solution: Remove spaces added by 'autoindent' when autocomplete is set + and restore did_ai in ins_compl_start() (Maxim Kim) + +Patch 9.1.1860 +Problem: clipboard register "+" enabled with cplipboard provider feature + (BenYip, after v9.1.1857) +Solution: Don't make clipboard provider enable plus register on UNIX + (Foxe Chen). + +Patch 9.1.1861 +Problem: Amiga: Locating runtime directory and rc files can be + simplified. +Solution: Use assigns since it's simpler and more in line with + how other Amiga applications work (Ola Söder). + +Patch 9.1.1862 +Problem: Wrong ifdefs for clipboard provider (after v9.1.1857) +Solution: Update ifdefs (Foxe Chen). + +Patch 9.1.1863 +Problem: Cannot test for working "+" register +Solution: Add a few more feature tests (Foxe Chen). + +Patch 9.1.1864 +Problem: tests: Clipboard provider feature test failure +Solution: Check in the test that the + clipboard register is available, + fix compile warning (Foxe Chen) + +Patch 9.1.1865 +Problem: tests: test_codestyle does not notice lines containing only a tab +Solution: Fix the whitespace issue in eval.txt, update test_codestyle to + notice such issues (Hirohito Higashi). + +Patch 9.1.1866 +Problem: HAVE_STRCSPN define is unused +Solution: Remove all HAVE_STRCSPN defines (Ola Söder). + +Patch 9.1.1867 +Problem: HAVE_STDARG_H still defined (after v7.4.1216) +Solution: Remove all remaining occurrences of HAVE_STDARG_H (Ola Söder). + +Patch 9.1.1868 +Problem: v:register is wrong in v_: command (after 9.1.1858). +Solution: Don't reset v:register for OP_COLON (zeertzjq). + +Patch 9.1.1869 +Problem: tests: test failures with Python 3.14 and test_python3 +Solution: Adjust the expected error message (Yee Cheng Chin). + +Patch 9.1.1870 +Problem: :Tutor may not work as expected +Solution: set buftype=nowrite instead of nofile (Phạm Bình An). + +Patch 9.1.1871 +Problem: Wrong 'showcmd' in the command-line window. +Solution: Clear 'showcmd' when entering cmdwin (zeertzjq). + +Patch 9.1.1872 +Problem: Cmdline history not updated when mapping both and . +Solution: Consider the command typed when in Cmdline mode and there is + no pending input (zeertzjq). + +Patch 9.1.1873 +Problem: Clipboard provider feature broke clipboard support (Yee Cheng Chin) +Solution: Revert clipboard changes (Foxe Chen). + +Patch 9.1.1874 +Problem: PMenuShadow overrides highlighting attributes (Maxim Kim) +Solution: Use hl_combine_attr() to combine popup attribute with shadow + attribute (Girish Palya). + +Patch 9.1.1875 +Problem: username parsing bug in netrw plugin when using remote adding + feature +Solution: Allow any characters except for "@" (Václav Kobera), add a + test for the netrw plugin. + +Patch 9.1.1876 +Problem: pre-inserted text not exposed in complete_info() +Solution: Add the pre-inserted text to the complete_info() Vim script + function (Girish Palya). + +Patch 9.1.1877 +Problem: cindent: wrong indentation after an array declaration +Solution: check if the filetype if javascript before matching the syntax + (Anttoni Erkkilä). + +Patch 9.1.1878 +Problem: filetype: Soy files are not recognized +Solution: Detect *.soy files as soy filetype, include a soy filetype plugin + (Riley Bruins). + +Patch 9.1.1879 +Problem: Crash when using a lambda funcref with :defer +Solution: De-reference the partial correctly after invoking the deferred + functions (Yegappan Lakshmanan). + +Patch 9.1.1880 +Problem: Allocation error with complete_info() (after v9.1.1876) +Solution: Make sure length is positive (kuuote). + +Patch 9.1.1881 +Problem: tests: test_popupwin fails after c8eeda9b due to syntax + highlighting change +Solution: Regenerate terminal dumps Test_popup_setbuf*dump (Yee Cheng Chin). + +Patch 9.1.1882 +Problem: Vim9: Not able to use a lambda with :defer (Maxim Kim) +Solution: Add support for this (Yegappan Lakshmanan). + +Patch 9.1.1883 +Problem: Wrong display with 'smoothscroll' when FEAT_DIFF is disabled. +Solution: Use plines_correct_topline() (zeertzjq). + +Patch 9.1.1884 +Problem: :defer an empty lambda causes a crash + (Maxim Kim, after v9.1.1882) +Solution: Check for missing arguments (Yegappan Lakshmanan). + +Patch 9.1.1885 +Problem: Wrong restored cursor position when re-entering a buffer + previously viewed in a window after making changes to the same + buffer in another window. +Solution: Adjust per-window "last cursor" positions on buffer changes + (zeertzjq). + +Patch 9.1.1886 +Problem: filetype: Android aconfig files are not recognized +Solution: Detect *.aconfig files as pbtxt filetype (Bruno Belanyi). + +Patch 9.1.1887 +Problem: string handling in strings.c can be improved +Solution: Refactor strings.c and remove calls to STRLEN() (John Marriott). + +Patch 9.1.1888 +Problem: Wrong display with cpo+=$, matchparen and wrapped line. +Solution: Use old cursor line height when scrolling with cpo+=$. Also + fix wrong redraw in non-current window (zeertzjq). + +Patch 9.1.1889 +Problem: filetype: not all AppleScript files are recognized +Solution: Detect *.applescript files as applescript filetype (Samuel Huang). + +Patch 9.1.1890 +Problem: %P in 'statusline' doesn't behave as documented + (after 9.1.1479). +Solution: Make the percentage 3-chars wide when not translated (zeertzjq). + +Patch 9.1.1891 +Problem: In visual mode, g does not move to the last non-blank + character when the end of a line is on the same line as the + cursor (after v9.0.1753). +Solution: Move the cursor back by one position if it lands after the + line (varsidry). + +Patch 9.1.1892 +Problem: A plugin does not know when startup scripts were already + triggered. This is useful to determine if a function is + called inside vimrc or after (like when sourcing 'plugin/' files). +Solution: Add the v:vim_did_init variable (Evgeni Chasnovski). + +Patch 9.1.1893 +Problem: ICCF charity will dissolve +Solution: Update references to Kuwasha + +Patch 9.1.1894 +Problem: global_runtime_dir appends /after directory when using XDG + configuration directory (Marius Gedminas). +Solution: Do not append /after to RUNTIME_GLOBAL_AFTER. + +Patch 9.1.1895 +Problem: OSC terminal response hard to detect +Solution: Add the and pseudo keys (Foxe Chen). + +Patch 9.1.1896 +Problem: tests: Patch v9.1.1895 breaks CI, by failing screen dump tests + test_listlbr_utf8, test_diffmode and test_cmdline +Solution: Revert it + +Patch 9.1.1897 +Problem: Mac: Build failure on Mac OS X 10.6 due to the use of generics + for the sound feature. +Solution: Use the simple, non-generic Objective-C version (Luke Lollard). + +Patch 9.1.1898 +Problem: tabpanel: inconsistent use of cmdline and message area with + tabpanel +Solution: Reduce the cmdline and message area by the horizontal size of + the tabpanel (Hirohito Higashi). + +Patch 9.1.1899 +Problem: tabpanel: getcmdscreenpos() wrong when tabpanel is shown +Solution: Adjust f_getcmdscreenpos() and add cmdline_col_off + (Hirohito Higashi). + +Patch 9.1.1900 +Problem: tabpanel: wrong condition after v9.1.1898 +Solution: Update condition (Hirohito Higashi). + +Patch 9.1.1901 +Problem: tests: test_vim9_generics fails when built without the job or + channel feature (lazypingu) +Solution: Skip test if job/channel feature is not available. + +Patch 9.1.1902 +Problem: GTK fails to compile with !FEAT_PROP_POPUP +Solution: Correct syntax under #ifdef (Drew Vogel). + +Patch 9.1.1903 +Problem: GTK naming still reflects GTK1 support +Solution: Rename to avoid confusion (Drew Vogel). + +Patch 9.1.1904 +Problem: Code still supports GTK2 versions older than 2.4. +Solution: Drop support for GTK2 < 2.4 (Drew Vogel). + +Patch 9.1.1905 +Problem: tabpanel: truncates terminal output (hokorobi) +Solution: Use topframe->fr_width, not Columns (which includes the + tabpanel width) (Hirohito Higashi) + +Patch 9.1.1906 +Problem: filetype: not all Ruby files are recognized +Solution: Detect *.rbi and Brewfile as ruby filetype (botantony). + +Patch 9.1.1907 +Problem: xterm: no support for mouse buttons 8 and 9 +Solution: Add support for terminals with xterm-like mouse functionality + (notuxic). + +Patch 9.1.1908 +Problem: tests: test_crash.vim times out in CI ASAN builds +Solution: Increase timeout for ASAN or Valgrind runs. + +Patch 9.1.1909 +Problem: filetype: .mom files recognized as nroff files +Solution: Detect *.mom files as groff filetype instead (Callum Andrew). + +Patch 9.1.1910 +Problem: tests: test failures in Test_term_gettitle() in CI +Solution: CI: Allow for title buffering in Test_term_gettitle() + (Aliaksei Budavei). + +Patch 9.1.1911 +Problem: build failure on Solaris Sparc with gcc 5 (idgn23, after v9.1.1736) +Solution: Correctly initialize the key_name variable. + +Patch 9.1.1912 +Problem: tests: test_plugin_comment fails, because it depends on nroff + filetype for .mom file (after v9.1.1909) +Solution: Explicitly set filetype to nroff. + +Patch 9.1.1913 +Problem: Error message with :unlet! and non-existing dictionary item + (Coacher) +Solution: Set GLV_QUIET when using unlet with bang attribute. + +Patch 9.1.1914 +Problem: runtime(netrw): LocalBrowseCheck() wipes unnamed buffers when + g:netrw_fastbrowse=0 (Carlos Falgueras García) +Solution: Check that bufname() is not empty. + +Patch 9.1.1915 +Problem: :breaklist accepts unprocessed arguments. +Solution: Remove EX_EXTRA flag from the Ex command definition (Doug Kearns). + +Patch 9.1.1916 +Problem: WinEnter autocommand may confuse Vim when closing tabpage (hokorobi) +Solution: Verify that curwin did not change in close_others(). + +Patch 9.1.1917 +Problem: Vim9: incorrect type inference with mkdir() (dezza) +Solution: Before compiling a RHS expression in an assignment, save the + new local variable contents (Yegappan Lakshmanan). + +Patch 9.1.1918 +Problem: completion: crash with fuzzy completion (Christian Brabandt) +Solution: When completion candidates are gathered from a different + window, and when completing ``, linked list should be + sorted only after all items are collected (Girish Palya). + +Patch 9.1.1919 +Problem: tabpanel: cannot handle mouse clicks in command line + (char101, after v9.1.1898) +Solution: Update the condition that checks if the mouse pointer is on + the command line (Hirohito Higashi). + +Patch 9.1.1920 +Problem: tests: not enough testing for wildtrigger() pum redrawing. +Solution: Also test redrawing when leaving cmdline mode (zeertzjq). + +Patch 9.1.1921 +Problem: xdiff: included xdiff code is outdated because it is based on + git 2.40.0 +Solution: Sync with xdiff from git 2.52 (Yee Cheng Chin). + +Patch 9.1.1922 +Problem: Wrong virtcol('$') with virtual text at EOL (rickhowe). +Solution: Also add 1 to end virtcol when there is virtual text (zeertzjq). + +Patch 9.1.1923 +Problem: When assigning to @. in a :let command an incorrect "E15" + error is emitted. +Solution: Emit the correct "E354" error. (Doug Kearns). + +Patch 9.1.1924 +Problem: 'commentstring' requires the +folding feature but is used in + contexts other than folding. +Solution: Remove the +folding feature guards from 'commentstring' and + make it available in all builds (Doug Kearns). + +Patch 9.1.1925 +Problem: make depend does not add osdef.h for the dependencies (Drew Vogel) +Solution: Move ifdef PROTO (Hirohito Higashi). + +Patch 9.1.1926 +Problem: xdiff: Coverity warning with MAX_CNT/UINT_MAX usage + (after v9.1.1921) +Solution: Replace XDL_MIN macro to a manual check (Yee Cheng Chin). + +Patch 9.1.1927 +Problem: Wayland: clipboard code too complex +Solution: Simplify clipboard related code around W23/W24 (Foxe Chen). + +Patch 9.1.1928 +Problem: xxd: exit_with_usage() can be simplified +Solution: Clean up exit_with_usage() formatting slightly (Stefan Haubenthal). + +Patch 9.1.1929 +Problem: completion: spell completion wrong with fuzzy +Solution: Disable fuzzy sort for spell completion (Maxim Kim). + +Patch 9.1.1930 +Problem: completion: 'completefuzzycollect' option is too obscure +Solution: Deprecate the option, but don't error out for existing scripts, + behave like 'completefuzzycollect' is set when fuzzy + completion is enabled (Girish Palya). + +Patch 9.1.1931 +Problem: completion: wrong item selected with fuzzy and noinsert + (Evgeni Chasnovski) +Solution: Reset selected item after fuzzy sort (Girish Palya). + +Patch 9.1.1932 +Problem: OSC terminal response hard to detect +Solution: Add the and pseudo keys (Foxe Chen). + +Patch 9.1.1933 +Problem: completion: complete_match() Vim script function and + 'isexpand' option are not that useful and confusing + (after v9.1.1341) +Solution: Remove function and option and clean up code and documentation + (Girish Palya). + +Patch 9.1.1934 +Problem: filetype: not all starlark files are recognized +Solution: Detect *.sky files as starlark filetype (Bruno Belanyi). + +Patch 9.1.1935 +Problem: filetype: not all Erlang files are recognized +Solution: Detect *.app.src and rebar.config files as erlang filetype + (John Parise). + +Patch 9.1.1936 +Problem: filetype: Erlang lexical files are not recognized +Solution: Detect *.xrl files as leex filetype, include syntax and + filetype plugins (Jon Parise). + +Patch 9.1.1937 +Problem: tests: Test_matchfuzzy_initialized() fails +Solution: Send a dummy key (Corey Hickey) + +Patch 9.1.1938 +Problem: tests: excessive wait in Test_matchfuzzy_initialized +Solution: Use term_wait() instead of the TermWait() wrapper (Corey Hickey). + +Patch 9.1.1939 +Problem: tests: test_matchfuzzy() leaves swapfiles behind +Solution: Close loaded buffers using "%bw". + +Patch 9.1.1940 +Problem: clipboard registers "+" and "*" synced without "autoselect" +Solution: Remove code that explicitly syncs those clipboard registers + (Corey Hickey). + +Patch 9.1.1941 +Problem: tests: Test_execute_register() leaves swapfile behind +Solution: Use :bw instead of :close to close the buffer completely. + +Patch 9.1.1942 +Problem: Assignment to read-only registers @: and @% is allowed during + compilation. +Solution: Abort compilation and emit an E354 error when assigning to + these registers (Doug Kearns). + +Patch 9.1.1943 +Problem: Memory leak with :breakadd expr +Solution: Free debug_oldval and debug_newval before assigning to them. + Verify the existing (though confusing) :breakadd expr behavior + (zeertzjq). + +Patch 9.1.1944 +Problem: gewininfo() does not return if statusline is visible +Solution: Add status_height to the dict items returned by + getwininfo() (Hirohito Higashi). + +Patch 9.1.1945 +Problem: tests: Test_getbufwintabinfo() leaves swapfiles behind +Solution: Close all open buffers using %bw! + +Patch 9.1.1946 +Problem: Cannot open the help in the current window +Solution: Promote the example from tips.txt to a proper package and + include the helpcurwin package, add tests for it (Peter Kenny). + +Patch 9.1.1947 +Problem: [security]: Windows: Vim may execute commands from current + directory (Simon Zuckerbraun) +Solution: Set the $NoDefaultCurrentDirectoryInExePath before running + external commands. + +Patch 9.1.1948 +Problem: Windows: Vim always adds the current directory to search path. + This should only happen when using cmd.exe as 'shell'. For + example, powershell won't run binaries from the current + directory. +Solution: Only add current directory to system path, when using cmd.exe + as 'shell'. + +Patch 9.1.1949 +Problem: :stag does not use 'swichtbuf' option, though the + documentation states differently (Christian Brabandt) +Solution: Respect 'switchbuf' option (Yegappan Lakshmanan). + +Patch 9.1.1950 +Problem: tests: Test_tagjump.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.1951 +Problem: tests: Test_windows_external_cmd_in_cwd() is only run in huge + builds (after 9.1.1947). +Solution: Move it to test_system.vim so that it is run in normal builds. + +Patch 9.1.1952 +Problem: tests: need better tests for tf files +Solution: Add better filetype test for terraform/tf filetype + +Patch 9.1.1953 +Problem: gui_mch_set_titlebar_colors() doesn't need to be called when + 'go+=C' is not set. +Solution: Switch the default value to false. + +Patch 9.1.1954 +Problem: Setting a byte in a blob, accepts values outside 0-255 +Solution: When setting a byte in a blob, check for valid values + (Yegappan Lakshmanan). + +Patch 9.1.1955 +Problem: sort() does not handle large numbers correctly + (Igbanam Ogbuluijah) +Solution: Don't truncate the return value of tv_get_number_chk() + (Yegappan Lakshmanan). + +Patch 9.1.1956 +Problem: tests: test_sort.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.1957 +Problem: filetype: bpftrace files are not recognized +Solution: Detect *.bt files as btftrace filetype, + include a btftrace filetype plugin (Stanislaw Gruszka). + +Patch 9.1.1958 +Problem: Wrong display when scrolling with 'scrolloff' and calling + sign_unplace() and setline() in CursorMoved (after 8.2.3204). +Solution: Still scroll for changed lines below the top area when the top + is scrolled down (zeertzjq). + +Patch 9.1.1959 +Problem: Outputting long strings using :echowindow wraps one character + per line and display in reverse order (Hirohito Higashi) +Solution: Use full width for :echowindow, reset msg_col after wrapping, + and increment lnum correctly when creating new lines (glepnir). + +Patch 9.1.1960 +Problem: When the popup menu is displayed above the cursor and the + selected item has no room below for the info popup, + popup_adjust_position() places the popup in the available + space above. The calculation added some extra lines, causing + the popup to be misaligned. +Solution: For info popups, undo that extra spacing so the popup stays + aligned with the selected item (glepnir). + +Patch 9.1.1961 +Problem: :0tab behaves like :tab for :stag when 'switchbuf' contains + "newtab" (after 9.1.1949). +Solution: Don't override cmod_tab if it's already non-zero (zeertzjq). + +Patch 9.1.1962 +Problem: filetype: Erlang application resource files are not recognized +Solution: Add content-based filetype detection for application resource + files matching extension '*.app' (Doug Kearns). + +Patch 9.1.1963 +Problem: diff: missing diff size limit for xdiff +Solution: Impose file size limit for internal diff (xdiff) + (Yee Cheng Chin). + +Patch 9.1.1964 +Problem: Wrong display when using setline() at hit-enter prompt + (after 8.2.3204). +Solution: Only skip scrolling for changed lines in top area if it's + scrolled down due to w_topline change. Also add more testing + for what 8.2.3204 fixed (zeertzjq). + +Patch 9.1.1965 +Problem: When exiting at the end of the more prompt (at the hit enter + prompt) by hitting q the recording mode will be started. + (Jakub Łuczyński) +Solution: Don't add the q key to the typeahead buffer + in the function wait_return (Bjoern Foersterling) + +Patch 9.1.1966 +Problem: MS-Windows: dark mode in gui is not supported +Solution: Inplement the 'd' flag in 'guioptions' (Mao-Yining). + +Patch 9.1.1967 +Problem: if_python: 64bit numbers truncated +Solution: cast python result to long long (lsq). + +Patch 9.1.1968 +Problem: tests: test_python3.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.1969 +Problem: Wrong cursor position after formatting with long 'formatprg'. +Solution: Don't show hit-enter prompt when there are stuffed characters. + +Patch 9.1.1970 +Problem: visual end column returns wrong value after block edit +Solution: update visual end column after block insert (phanium). + +Patch 9.1.1971 +Problem: Crash when buffer gets deleted inside charconvert during save +Solution: Check for `b_saving` inside `can_unload_buffer()`, so we don’t try to + unload a buffer while it’s still being saved (glepnir). + +Patch 9.1.1971 +Problem: crash with invalid positional argument 0 in printf() +Solution: Reject positional arguments <= 0. + +Patch 9.1.1972 +Problem: No way to access the clipboard without X11/Wayland. +Solution: Add the clipboard provider feature (Foxe Chen). + +Patch 9.1.1973 +Problem: some minor problems with clipboard provider code + (after v9.1.1972) +Solution: Fix minor issues (Foxe Chen) + +Patch 9.1.1974 +Problem: tests: missing cleanup in Test_bwipe_during_save(). +Solution: Reset &charconvert. + +Patch 9.1.1975 +Problem: blob2str() may call strcpy with a NULL pointer +Solution: Check for NULL before calling STRNCPY(). + +Patch 9.1.1976 +Problem: When using listeners, there is no way to run callbacks at + specific points in the redraw cycle. +Solution: Add redraw_listener_add() and redraw_listener_remove() and + allow specifying callbacks for redraw start and end (Foxe Chen). + +Patch 9.1.1977 +Problem: MS-Windows: missing dependency on optiondefs.h in Mingw and + Cygwin Makefile (Mao-Yining) +Solution: Update $INCL variable. + +Patch 9.1.1978 +Problem: tests: Test_smoothscroll_number() may fail because of 'showcmd' +Solution: Send redraw command (Hirohito Higashi). + +Patch 9.1.1979 +Problem: :helpclose incorrectly accepts a range and a count. +Solution: Remove EX_COUNT and EX_RANGE from the command definition + (Doug Kearns). + +Patch 9.1.1980 +Problem: filetype: N-Quads files are not recognized +Solution: Detect *.nq files as nq filetype. + +Patch 9.1.1981 +Problem: tests: test suite may stop on error in gen_opt_test.vim +Solution: Use a different output file for log files (Muraoka Taro). + +Patch 9.1.1982 +Problem: Use after free with redraw_listener_add() (after: v9.1.1976) +Solution: Copy Callbacks into listener struct (Foxe Chen). + +Patch 9.1.1983 +Problem: Vim9: class_name definition can be improved +Solution: Use string_T to store class_name, avoid using STRLEN() calls, + simplify code, remove unused definition of struct + oc_newmember_S (John Marriott). + +Patch 9.1.1984 +Problem: terminal OSC52 support to access the clipboard can be improved +Solution: Include and package the optional osc52 package, note: this + requires a Vim with clipboard provider feature (Foxe Chen). + +Patch 9.1.1985 +Problem: tests: test_sound.vim fails when run locally on Windows +Solution: Skip Test_play_silent in Windows non-GUI environments. + +Patch 9.1.1986 +Problem: clipboard provider does not work when redirecting messages + (BenYip, after v9.1.1972) +Solution: Adjust ifdefs in ex_redir(). + +Patch 9.1.1987 +Problem: assert_equal() prepends unnecessary ':' when typed (after 9.0.1758). +Solution: Don't change a NULL stacktrace to an empty string (zeertzjq). + +Patch 9.1.1988 +Problem: osc52 package can be further improved (after v9.1.1984). +Solution: Improve plugin, update test and check for clipboard_provider + feature (Foxe Chen). + +Patch 9.1.1989 +Problem: Vim intro screen shows register message (after v9.1.1893) +Solution: Remove the register message, registering is no longer useful + and possible. + +Patch 9.1.1990 +Problem: tests: Test_term_gettty() fails when using conpty on Windows, + CI uses winpty, so this test passes. +Solution: Skip the test Test_term_gettty(). Since conpty communicates + via anonymous pipes, there is no name that can be obtained + with term_gettty() (Muraoka Taro) + +Patch 9.1.1991 +Problem: :setlocal changes effective global 'omnifunc' (Maxim Kim) +Solution: Don't change global callback when using :setlocal (zeertzjq). + +Patch 9.1.1992 +Problem: Vim9: heap buffer overflow with COMPAREANY instruction +Solution: Verify the type and error out in case of different types (Foxe Chen) + +Patch 9.1.1993 +Problem: MS-Windows: compile error because of implicit size conversions + (after v9.1.1983) +Solution: Change type casts + +Patch 9.1.1994 +Problem: More deterministic synchronisation can be established between + processes running test cases and collecting visual effects to + a screendump file for future verification by anticipating + the availability of known parts of such a file and asserting + the location of the cursor. +Solution: Provide a convenience test function that waits a specified + time for cursor positioning (Aliaksei Budavei). + +Patch 9.1.1995 +Problem: Data races between test buffers are currently addressed by + relying on arbitrary execution delays or blissfully dismissed. +Solution: Prefer more deterministic synchronisation between test buffers + for test cases that generate screendump files with expected + results (Aliaksei Budavei). + +Patch 9.1.1996 +Problem: tests: test_cmdline.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.1997 +Problem: Missing out-of-memory check in vim9class.c in calls to + vim_strnsave(). +Solution: Refactor is_duplicate_variable() and is_duplicate_enum() and + make use of string_T struct instead (John Marriott). + +Patch 9.1.1998 +Problem: Not enough tests for :setlocal omnifunc (after 9.1.1991). +Solution: Move the last :new after :setlocal. Also test with 'complete' + (zeertzjq). + +Patch 9.1.1999 +Problem: clipboard provider does not respect 'clipboard' option + (Satoru Kitaguchi, after v9.1.1972) +Solution: Make clipboard provider register respect "unnamed/unnamedplus" + from the 'clipboard' option value. + +Patch 9.1.2000 +Problem: Vim9: class and object member names are stored as char_u * + pointer requiring repeated strlen() calls and making it harder + to use length-aware string operations consistently. +Solution: Store ocm_name as a string_T instead of char_u * (John Marriott). + +Patch 9.1.2001 +Problem: After :botright copen and closing the quikfix window, the + cursor ends up in the wrong window. The problem is fr_child + always points to the first (leftmost for FR_ROW, topmost for + FR_COL) child frame. When do :vsplit, the new window is + created on the left, and frame_insert() updates the parent's + fr_child to point to this new left window. +Solution: Create a snapshot before open the quickfix window and restore + it when close it (glepnir). + +Patch 9.1.2002 +Problem: Vim9: heap-use-after-free when when accessing protect class + member (Foxe Chen) +Solution: Set cl->class_type_list and return directly, add tests for + using protected class method and variable from another class + (Yegappan Lakshmanan). + +Patch 9.1.2003 +Problem: tests: Test_glob_symlinks may fail on Windows with UCRT + runtime +Solution: Comment out the code, do not use _wstat(). + +Patch 9.1.2004 +Problem: MS-Windows: If a directory with a single character name is + included in the PATH environment variable without a trailing + path separator, executable() will not be able to find the + executable file under it. +Solution: The second argument of the after_pathsep() function is now + passed the next pointer where a path separator may exist + (Muraoka Taro). + +Patch 9.1.2005 +Problem: MS-Windows: Missing fullscreen support for GUI version +Solution: Add "s" flag to guioptions (Mao-Yining) + +Patch 9.1.2006 +Problem: ANSI escape colors are not displayed correctly in + non-termguicolors in vim (cli) on Windows. The red and blue + channels seem to be swapped. +Cause: When converting VTerm ANSI index colors to cterm colors in + terminal.c, the Windows case equivalent to NR-16 (:help + cterm-colors) is ignored. +Solution: Created and used a table to convert ANSI indexed colors to + cterm's NR-16 representation (Windows only). This table + corresponds to the inverse conversion of cterm_ansi_idx in + term.c. The values in both tables are exactly the same, but + the meanings are opposite, so they are separate tables + (Muraoka Taro). + +Patch 9.1.2007 +Problem: bpftrace files are not recognized from the hashbang line. +Solution: Add a hashbang check (Stanislaw Gruszka). + +Patch 9.1.2008 +Problem: filetype: hylo files are not recognized +Solution: Detect *.hylo files as hylo filetype (Ambrus Tóth). + +Patch 9.1.2009 +Problem: tests: "Xm4" test directory may not be deleted +Solution: Use "R" flag with mkdir() call to have the directory + recursively deleted at the end of function Test_m4_format() + (Muraoka Taro). + +Patch 9.1.2010 +Problem: Missing out-of-memory checks in vim9class.c (after v9.1.2000). +Solution: Return FAIL early (John Marriott). + +Patch 9.1.2011 +Problem: crash when unreferencing gtk icon theme + (noamhalevy-wq, after v9.1.1583) +Solution: Remove the g_object_unref() call. + +Patch 9.1.2012 +Problem: Vim9: cannot initialize class member with protected var +Solution: Allow this to work if this happens within the same class + (Foxe Chen). + +Patch 9.1.2013 +Problem: tests: When opening a conpty terminal, if process startup + fails, it will silently exit. As a result, the + Test_terminal_shell_option in test_terminal3.vim failed in + conpty. +Solution: Make conpty fail with an error messages in the same way as winpty + (Muraoka Taro). + +Patch 9.1.2014 +Problem: clipboard: clipboard register corrupted with clipboard + provider (Satoru Kitaguchi and mikoto2000 after v9.1.1972) +Solution: Only adjust clipboard register points to the unnamed register + (Foxe Chen). + +Patch 9.1.2015 +Problem: blob2string() stopped after an empty line +Solution: Specifically check for empty content (Foxe Chen). + +Patch 9.1.2016 +Problem: At "if(0) do if(0); while(0); else", else should be aligned + with outer if, but is aligned with inner if. +Solution: In function find_match, ignore "if" and "else" inside a + do-while loop, when looking for "if". (Anttoni Erkkilä). + +Patch 9.1.2017 +Problem: getregionpos() depends on 'linebreak' setting +Solution: Reset linebreak setting temporarily (McAuley Penney). + +Patch 9.1.2018 +Problem: proto: ops.pro outdated (after v9.1.2017) +Solution: Regenerate the ops.pro proto file (Tao). + +Patch 9.1.2019 +Problem: When virtualedit is set to all, the cursor is supposed to be + permitted to reside anywhere, including on the virtual space + beyond the end of the buffer's text. Switching modes triggered + a routine that "fixed" a cursor that was past the end of the + line by shifting it back to the last actual character in the + line and compensating with a virtual column offset. While + visually identical, this re-encoding changed the underlying + byte index, causing position-reporting functions to return + inconsistent values after a mode change. +Solution: Skip this coordinate adjustment when virtual editing is fully + enabled. By treating the line terminator as a valid, stable + position, the cursor’s internal representation remains + unchanged when entering or exiting Visual mode, ensuring + consistent coordinate reporting. Add a regression test to + check this functionality (McAuley Penney). + +Patch 9.1.2020 +Problem: tests: test_virtualedit.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.2021 +Problem: filetype: fluent files are not recognized +Solution: Detect *.ftl files as fluent filetype (ners). + +Patch 9.1.2022 +Problem: Compilation issues on Windows when VIM + is compiled with OLE enabled, as "if_ole.cpp" cannot compile + due to the keyword conflict (after v9.1.2012). +Solution: Rename the member variable of `exarg` from `class` to `ea_class`. + (Wei Tang) + +Patch 9.1.2023 +Problem: A BufAdd autocommand may cause alist_add() to use freed + memory, this is caused by the w_locked variable unset too + early (henices) +Solution: In trigger_undo_ftplugin() only set w_locked to false, if it + was false when calling the function. + +Patch 9.1.2024 +Problem: 'fsync' option cannot be set per buffer +Solution: Make 'fsync' option global-local (glepnir). + +Patch 9.1.2025 +Problem: Conpty terminal process may not start. +Solution: Do not close the input handle at EOF when conpty is in use + (Muraoka Taro). + +Patch 9.1.2026 +Problem: tests: Patch 9.1.2019 not tested properly. +Solution: Add missing :exe (zeertzjq). + +Patch 9.1.2027 +Problem: filetype: bicep filetype used for 2 bicep file types +Solution: Detect *.bicepparam files as bicep-param filetype, include + new bicep-params and bicep filetype plugin (Scott McKendry). + +Patch 9.1.2028 +Problem: Buffer overflow in buf_write() when converting incomplete + multi-byte characters (Kevin Goodsell) +Solution: Make the buffer slightly larger. + +Patch 9.1.2029 +Problem: tests: the test_vim9_class.vim testfile is too long +Solution: Split out the interface related test cases into a new + test file test_vim9_interface.vim (Yegappan Lakshmanan). + +Patch 9.1.2030 +Problem: inefficient use of ga_concat() +Solution: Use ga_concat_len() when length is known (John Marriott). + +Patch 9.1.2031 +Problem: Makefile: cannot run make installinks twice +Solution: Change "ln -s" to "ln -sf" to force creation of the symlinks + (Thomas Petazzoni). + +Patch 9.1.2032 +Problem: Vim9: error when using class member in Lambda +Solution: Compare against uf_defclass variable (Foxe Chen). + +Patch 9.1.2033 +Problem: tests: Test_terminal_cwd in test_terminal.vim fails flaky + in the Windows ConPTY terminal. +Solution: In ConPTY, the timeout is extended to 1msec when reading a + channel associated with a job that is about to finish. This + allows Vim to read the last output of a process in a pseudo + console. Add comments to make the reasoning clear (Muraoka Taro). + +Patch 9.1.2034 +Problem: filetype: Fennel fnml files are not recognized (Alexei Mozaidze) +Solution: Detect *.fnml files as fennel filetype. + +Patch 9.1.2035 +Problem: filetype: Fennel fnlm files are not recognized + (Alexei Mozaidze, after v9.1.2034) +Solution: Detect *.fnlm files as fennel filetype, revert detecting + *.fnml files + +Patch 9.1.2036 +Problem: if_ruby: build error with ruby 4.0 (Mamoru Tasaka) +Solution: Always define rb_check_typeddata (EnumDev). + +Patch 9.1.2037 +Problem: undo: cursor position not correctly restored +Solution: Do not override the saved cursor position (altermo). + +Patch 9.1.2038 +Problem: tests: test_marks.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.2039 +Problem: if_ruby: crash when using Ruby/dyn 4.0 (after v9.1.2036) +Solution: Fix Ruby 4.0 dynamic builds correctly by inlining + rb_check_typeddata (Yee Cheng Chin) + +Patch 9.1.2040 +Problem: :tlnumenu incorrectly accepts a range. +Solution: Remove EX_RANGE and EX_ZEROR from the command definition and + use ADDR_NONE (Doug Kearns). + +Patch 9.1.2041 +Problem: tests: test_menu.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.2042 +Problem: filetype: systemd quadlet files are not recognized +Solution: Detect additional patterns as systemd filetype (Ac5000). + +Patch 9.1.2043 +Problem: filetype: kos files are not reconized +Solution: Detect *.kos files as kos filetype (Chris Dragan). + +Patch 9.1.2044 +Problem: Inefficient use of ga_concat() +Solution: Use ga_concat_len() when the length is already known to avoid + use of strlen() (John Marriott). + +Patch 9.1.2045 +Problem: Mac: Build failure with Mac OS X 10.6 + (Sergey Fedorov, after: v9.1.1748) +Solution: Add ifdefs MAC_OS_X_VERSION_10_7 around the code that sets the + scheduler priority. + +Patch 9.1.2046 +Problem: MS-Windows: compile warnings in os_win32.c, + acp_to_enc() requires char_u* but others require char* + (John Marriott, after v9.1.2013) +Solution: Cast the variables (Mao-Yining). + +Patch 9.1.2047 +Problem: MS-Windows: style issue in gui_w32.c +Solution: Fix indentation, drop unnecessary braces (Mao-Yining). + +Patch 9.1.2048 +Problem: Pressing backspace in ConPTY on Windows deletes an entire + word, not just a single character. This is the same as + pressing Alt + backspace in cmd.exe. +Solution: When using ConPTY on Windows, the `VTERM_KEY_BACKSPACE` key is + now sent when the Backspace key or Ctrl+H is detected (Muraoka Taro) + +Patch 9.1.2049 +Problem: Vim9: unexpected E1209 error +Solution: Fix error message (Hirohito Higashi). + +Patch 9.1.2050 +Problem: tests: Test_cd_completion() may fail depending on the contents + of the root directory of the current drive on Windows. + readdir() may return a directory that cannot "cd" to, causing + this test to fail. An example of such a directory is + "System Volume Information" which only admin can "cd" to. +Solution: When determining the directory to use for testing, use the + directory that we actually "cd" to successfully. + In addition, directories with '$' in their names are also + excluded, as they are considered environment variables during + completion and do not work as expected (Muraoka Taro). + +Patch 9.1.2051 +Problem: Test_cd_completion test fails in Appveyor. In Appveyor, a path + containing spaces was selected as the test target. But the + comparison failed because spaces were not taken into account + (after v9.1.2050) +Solution: Escape spaces in paths for comparison (Muraoka Taro). + +Patch 9.1.2052 +Problem: Compile error when disabling linebreak feature +Solution: Adjust ifdefs (Matthias Rader). + +Patch 9.1.2053 +Problem: If another find.exe derived from findutils is installed on + Windows, unintended behavior will occur. If MSYS2 is installed and + prioritized over the system path, then find.exe derived from + findutils will be launched during build, resulting in an + unintended warning message. +Solution: Specify the absolute path including SYSTEMROOT to launch + find.exe (Muraoka Taro). + +Patch 9.1.2054 +Problem: Can't unpack tuple from imported function (Mao-Yining) +Solution: Support multi-variable assignment from a tuple returned by an + imported function (Yegappan Lakshmanan). + +Patch 9.1.2055 +Problem: Division by zero in :file after failing to wipe buffer + (after 8.2.4631). +Solution: Still call buf_clear_file() when failing to wipe buffer (zeertzjq). + +Patch 9.1.2056 +Problem: tests: inconsistent indent and line breaking in Test_maparg(). +Solution: Consistently use spaces-only indent. Reorder fields to group + similar ones together and break lines at consistent positions. + Remove a mapping when it is no longer used (zeertzjq). + +Patch 9.1.2057 +Problem: Copying to clipboard register broken with 'go-P' (Coacher) +Solution: Verify that clip_plus is available (Foxe Chen). + +Patch 9.1.2058 +Problem: b_locked_split is not checked for :sbuffer, which allows + autocommands to leave windows open to freed buffers. +Solution: In do_buffer_ext, check just before possibly splitting, after + handling 'switchbuf'. Leave win_split to handle the check for + curbuf (Sean Dewar). + +Patch 9.1.2059 +Problem: filetype: Nickel files are not recognized +Solution: Detect *.ncl files as nickel filetype (Hoang Nguyen) + +Patch 9.1.2060 +Problem: filetype: Rasi include files are not recognized +Solution: Detect *.rasinc as rasi filetype (Hoang Nguyen). + +Patch 9.1.2061 +Problem: filetype: Koka files are not recognized +Solution: Detect *.kk files as koka filetype (Hoang Nguyen). + +Patch 9.1.2062 +Problem: filetype: djot files are not recognized +Solution: Detect *.dj and *.djot files as djot filetype (Hoang Nguyen). + +Patch 9.1.2063 +Problem: A few typos in the code and runtime files +Solution: Fix those (zeertzjq). + +Patch 9.1.2064 +Problem: completion: segfault during file name completion +Solution: Initialize compl_num_bests (Girish Palya). + +Patch 9.1.2065 +Problem: When building GvimExt with MinGW, some DLLs are still linked + even if STATIC_STDCPLUS=yes is set. +Solution: Following the Vim core, make some libraries explicitly + statically linked. The order of libraries is important, and + gcc_eh must be placed before winpthread (Muraoka Taro). + +Patch 9.1.2066 +Problem: :wqall! doesn't close a terminal buffer like :qall! does + (after 8.0.1525). +Solution: Check eap->forceit (zeertzjq). + +Patch 9.1.2067 +Problem: shadow variable warning in menu.c +Solution: Rename the variable (John Marriott). + +Patch 9.1.2068 +Problem: :bdelete/bunload/bwipeout may attempt to switch to a closing + buffer, which fails. (after 9.1.2058) +Solution: Don't consider switching to closing buffers (Sean Dewar). + +Patch 9.1.2069 +Problem: when shortmess doesn't have 'S', backward search wrap doesn't + show the "W" before count. forward search works fine but + backward fails because the position check logic is backwards - + it checks if cursor < pos instead of using the existing + wrapped flag. +Solution: Use sia->sa_wrapped flag that searchit() already sets + correctly (glepnir). + +Patch 9.1.2070 +Problem: Autocomplete breaks ":help" when 'dict' points to a large file + (lxhillwind) +Solution: Reset autocompletion timer expiry flag (Girish Palya). + +Patch 9.1.2071 +Problem: tests: test_ins_complete.vim leaves swapfiles behind +Solution: Close open buffers using :bw! instead of :close! + +Patch 9.1.2072 +Problem: Socket server has some small issues +Solution: Fix issues (Foxe Chen). + +Patch 9.1.2073 +Problem: auto/configure needs to be regenerated (after v9.1.2072) +Solution: Run make autoconf and update the configure script. + +Patch 9.1.2074 +Problem: Compile error with Motif GUI (Tony Mechelynck, after v9.1.2072) +Solution: Add ifdef FEAT_GUI_GTK + +Patch 9.1.2075 +Problem: tests: wrong change to test_ins_complete.vim + (zeertzjq, after v9.1.2071) +Solution: Revert unintentional changes. + +Patch 9.1.2076 +Problem: tests: When running the MinGW test, an error occurs after + generating opt_test.vim. +Solution: Rewrite the error detection in cmd.exe syntax (Muraoka Taro). + +Patch 9.1.2077 +Problem: Vim9: type issue when appending item to a list (Peter Kenny) +Solution: When adding a new item at the end of a list in vim9script, use + the proper item type (Yegappan Lakshmanan). + +Patch 9.1.2078 +Problem: A few more typos in various files +Solution: Fix those (zeertzjq, antonkesy). + +Patch 9.1.2079 +Problem: use-after-free with 'quickfixtextfunc' wiping buffer (henices) +Solution: Evaluate 'quickfixtextfunc' with textlock enabled. + +Patch 9.1.2080 +Problem: W23/W24 messsage appears on :reg (Coacher) +Solution: Silence message when using :reg command (Foxe Chen). + +Patch 9.1.2081 +Problem: MS-Windows: "#ifdef FEAT_GUI" exists within "ifdef + FEAT_GUI_MSWIN", which is confusing when reading the code. + FEAT_GUI is always defined if FEAT_GUI_MSWIN is defined (see + vim.h). Therefore, this check and the else block are unnecessary. +Solution: Removed unnecessary "#ifdef FEAT_GUI" (Muraoka Taro). + +Patch 9.1.2082 +Problem: modeless auto-select not working (Coacher) +Solution: Add support for modeless autoselect (Foxe Chen). + +Patch 9.1.2083 +Problem: style: wrong indentation of nested ifdefs +Solution: Fix indentation (Hirohito Higashi). + +Patch 9.1.2084 +Problem: Compile error when build with job feature (after v9.1.2077) +Solution: Add ifdefs (John Marriott). + +Patch 9.1.2085 +Problem: Use-after-free in winframe_remove() (henices) +Solution: Set window_layout_locked() inside winframe_remove() + and check that writing diff files is disallowed when the + window layout is locked. + +Patch 9.1.2086 +Problem: memory leak when not evaluating (just parsing) invalid literal + dict. +Solution: Always clear the key's typval (Sean Dewar) + +Patch 9.1.2087 +Problem: Crash when using :tabonly in BufUnload. +Solution: Set curbuf when setting curwin->w_buffer. Don't wipe out a + buffer if there are no other buffers. Don't decrement + b_nwindows if it was 0 before buf_freeall() (zeertzjq). + +Patch 9.1.2088 +Problem: Redundant NULL checks in find_pattern_in_path(). +Solution: Remove the NULL checks. Also fix typos in test_diffmode.vim + (zeertzjq). + +Patch 9.1.2089 +Problem: Wayland: Clipboard not working with external programs on + Wayland (devsnek) +Solution: Simplify the Wayland offer logic and drop offering the special + mime type (Foxe Chen). + +Patch 9.1.2090 +Problem: Last buffer not freed with EXITFREE (after 9.1.2087). +Solution: Free the last buffer when inside free_all_mem() (zeertzjq). + +Patch 9.1.2091 +Problem: Ruby headers define HAVE_FSYNC, which leaks into Vim sources + on Windows and changes conditional compilation of buf_T. This + causes struct layout mismatches in if_ruby.c and results in a + different offset for the b_p_bl property, making Vim::Buffer + access fail (after v9.1.2024) +Solution: Undefine HAVE_FSYNC after including the Ruby headers. + +Patch 9.1.2092 +Problem: Cannot detect kitty foreground/background color +Solution: Update builtin termcap entries (Mateo Gjika). + +Patch 9.1.2093 +Problem: heap-use-after-free when wiping buffer in TabClosedPre. +Solution: Check window_layout_locked() when closing window(s) in another + tabpage (zeertzjq). + +Patch 9.1.2094 +Problem: filetype: tiger files are not recognized +Solution: Detect *.tig files as tiger filetype (Christian Clason). + +Patch 9.1.2095 +Problem: :wqall! doesn't quit when using :quit in BufWritePost + (after 8.0.1190). +Solution: Restore old value of "exiting" when calling not_exiting() + instead of always resetting it to FALSE (zeertzjq). + +Patch 9.1.2096 +Problem: Vim9: truthiness issue with objects (kennypete) +Solution: Return true for an non-null object (Yegappan Lakshmanan). + +Patch 9.1.2097 +Problem: TabClosedPre may be triggered twice for the same tab page when + closing another tab page in BufWinLeave (after 9.1.1211). +Solution: Store whether TabClosedPre was triggered in tabpage_T (zeertzjq). + +Patch 9.1.2098 +Problem: Crash with 'wildmenu' when typing Ctrl-Y after Ctrl-A + (after 9.1.1714) (fizz-is-on-the-way). +Solution: Check if there are matches before applying one (zeertzjq). + +Patch 9.1.2099 +Problem: Depending on the worker's environment, the line endings in + ja.sjis.po may differ from those in the source ja.po. +Solution: By setting standard input and output to binary mode, the line + endings for input and output will match (Muraoka Taro) + +Patch 9.1.2100 +Problem: filetype: tiltfiles are not recognized +Solution: Detect Tiltfiles.* and *.tiltfiles as tiltfile filetype (Luis Davim) + +Patch 9.1.2101 +Problem: Vim9: more truthiness issues (kennypete) +Solution: Class, enum and typealias cannot be used with the falsy + operator (Yegappan Lakshmanan). + +Patch 9.1.2102 +Problem: foldtext not reversed and cut off in 'rightleft' mode (bfredl) +Solution: Fix the rightleft redrawing logic (Sergey Vlasov). + +Patch 9.1.2103 +Problem: tests: test_fold.vim leaves swapfiles behind +Solution: Close open buffer using :bw! instead of :close! + +Patch 9.1.2104 +Problem: readdirex() might be slow (Mao-Yining) +Solution: Avoid double slash in path concatenation in create_readdirex_item() + (Yasuhiro Matsumoto). + +Patch 9.1.2105 +Problem: Not enough tests for using plain_vgetc(). +Solution: Add tests for using plain_vgetc() during various commands (zeertzjq) + +Patch 9.1.2106 +Problem: Vim9: class, enum and type alias can be used as value in an + expression (kennypete) +Solution: Abort expression evaluation if class, enum or type alias is + used in an expression (Yegappan Lakshmanan). + +Patch 9.1.2107 +Problem: :normal may change cmdline history if the keys don't + explicitly leave Cmdline mode (after 9.1.1872). +Solution: Check ex_normal_busy (zeertzjq). + +Patch 9.1.2108 +Problem: Test_foldtextresult_rightleft() does not restore 'columns' + (after v9.1.2102) +Solution: Save and restore the value of 'columns' (zeertzjq). + +Patch 9.1.2109 +Problem: filetype: NetLinx fires are not recognized +Solution: Detect *.axs and *.axi as netlinx filetype (kb). + +Patch 9.1.2110 +Problem: filetype: skhd files are not recognized +Solution: Detect .skhdrc and skhdrc as skhd filetype, include a syntax and + filetype plugin, add syntax tests (Kiyoon Kim). + +Patch 9.1.2111 +Problem: Vim9: no error for elseif/else after else +Solution: Report an error (Hirohito Higashi). + +Patch 9.1.2112 +Problem: long statusline may crash if using singlebyte encoding + (fizz-is-on-the-way) +Solution: Drop the non-mbyte codepath and always use the mbyte code (zeertzjq) + +Patch 9.1.2113 +Problem: potential NULL pointer dereference issues (EpheraXun) +Solution: Check returned pointer to be non NULL (Yasuhiro Matsumoto). + +Patch 9.1.2114 +Problem: modeless selection not copied to * register when P in + guioptions (Coacher) +Solution: Make the "P" flag override the "a" and "A" flag (Foxe Chen). + +Patch 9.1.2115 +Problem: CI: wrong preprocessor indentation (after v9.1.2114) +Solution: Update indentation (Yasuhiro Matsumoto). + +Patch 9.1.2116 +Problem: crash when using 'tagfunc' (Rodrigo Queipo) +Solution: Do not add the user_data to the 'info' dictionary when called + for insert mode completion (the TAG_INS_COMP flag is set). + Completion should not depend on the state of a previous tag + jump (Yasuhiro Matsumoto). + +Patch 9.1.2117 +Problem: unnecessary braces in terminal.c + (Christ van Willegen, after v9.1.2113) +Solution: Remove braces. + +Patch 9.1.2118 +Problem: 'cursorline' and part of 'statusline' are missing after + :diffput to an empty buffer. +Solution: Make sure the cursor doesn't go beyond the last line after + :diffput (zeertzjq). + +Patch 9.1.2119 +Problem: tests: Test_language_cmd fails on OpenBSD because the test + uses an invalid locale name and expects the command to produce + an error. OpenBSD accepts (almost) any locale name as valid by + design, so the :lang command succeeds and the test fails. +Solution: Slightly update the "bad" locale name to make it something + that OpenBSD considers invalid by adding a dot (but not ending + with ".UTF-8"). Maintain the original two underscores in the + name because that ensures Windows will also see it as invalid + (Kevin Goodsell). + +Patch 9.1.2120 +Problem: blob2str() does not restore trailing newline +Solution: Append empty string (thinca). + +Patch 9.1.2121 +Problem: Vim9: type issue when modifying a variable using :legacy + (kennypete) +Solution: In a vim9 script, when modifying a variable using the legacy + command, check the type (Yegappan Lakshmanan). + +Patch 9.1.2122 +Problem: Vim9: Negating a float doesn't result in a boolean (kennypete) +Solution: Make it return a boolean (Yegappan Lakshmanan). + +Patch 9.1.2123 +Problem: using NOT with a float returns a float in legacy vim script + (kennypete) +Solution: Return a number instead of a float (Yegappan Lakshmanan). + +Patch 9.1.2124 +Problem: blob2str() does not handle UTF-16 encoding (Hirohito Higashi) +Solution: Refactor the code and fix remaining issues, see below + (Yasuhiro Matsumoto). + +Patch 9.1.2125 +Problem: MS-Windows: DirectX rendering can be improved +Solution: Use lpDx advance, fix vertical text shift and correct + font-size calculations (Yasuhiro Matsumoto). + +Patch 9.1.2126 +Problem: vim --version used single column for feature list + (Ben Knoble, after v9.1.1898) +Solution: Restore old behaviour and assume 80 columns, making sure the feature + list is shown in several columns (Ben Knoble, Hirohito Higashi). + +Patch 9.1.2127 +Problem: MS-Windows: DirectX renders font too small in comparison to + the GDI rendering (Linwei, after v9.1.2125) +Solution: Implement proper font clipping (Yasuhiro Matsumoto). + +Patch 9.1.2128 +Problem: heap UAF if autocommands from reloading a file changed outside + of Vim wipe its buffer. +Solution: Validate the bufref after buf_reload (Sean Dewar). + +Patch 9.1.2129 +Problem: MS-Windows: font size calculation slightly wrong, causing + vertical line gaps (Maxim Kim, after v9.1.2127) +Solution: Update font size calculation when using DirectX + (Yasuhiro Matsumoto). + +Patch 9.1.2130 +Problem: Page scrolling in Insert mode beeps (after 9.1.0211). +Solution: Fix incorrect return value of pagescroll(). Also invert the + return value of scroll_with_sms() to be less confusing and + match comments (zeertzjq). + +Patch 9.1.2131 +Problem: tests: Test_diff_screen() fails on BSD +Solution: Use gdiff on BSD systems if available (zeertzjq). + +Patch 9.1.2132 +Problem: [security]: buffer-overflow in 'helpfile' option handling by + using strcpy without bound checks (Rahul Hoysala) +Solution: Limit strncpy to the length of the buffer (MAXPATHL) + +Patch 9.1.2133 +Problem: Another case of buffer overflow with 'helpfile'. +Solution: Leave room for "tags" in the buffer (zeertzjq). + +Patch 9.1.2134 +Problem: Terminal doesn't handle split UTF-8 sequence after ASCII. +Solution: Only use one UTF-8 encoding state per vterm state (zeertzjq). + +Patch 9.1.2135 +Problem: search() is used to check for the message from tar that + indicates leading slashes found in the tar archive, or to + check for the leading slashes themselves. However, if + 'nowrapscan' is in effect these searches are limited to the + last line and don't find any results. This causes the warning + message from tar to be seen in the buffer, the "Path Traversal + Attack Detected" message to be omitted, and editing actions + can fail. This can be seen, for example, when editing + src/testdir/samples/evil.tar. +Solution: Use the 'w' flag for search() (Kevin Goodsell) + +Patch 9.1.2136 +Problem: :tab sbuffer may close old tabpage if BufLeave autocommand + splits window (after 9.1.0143). +Solution: Only close other windows if the buffer will be unloaded (zeertzjq). + +Patch 9.1.2137 +Problem: Some tests are not valid on OpenBSD. +Solution: Add CheckNotOpenBSD, use it to skip certain tests + (Kevin Goodsell). + +Patch 9.1.2138 +Problem: With 'autochdir' win_execute() can corrupt the buffer name, causing + :write to use wrong path. +Solution: Save and restore b_fname when 'autochdir' is active (Ingo Karkat). + +Patch 9.1.2139 +Problem: Buffer overflow in :wlrestore command, caused by assuming + wrong buffer length in vwl_log_handler() (Seungyeon Park) +Solution: Use correct buffer size (512 bytes) in vim_vsnprintf() + to properly truncate long messages. + +Patch 9.1.2140 +Problem: tests: Test_wayland_protocol_error_overflow() fails + (after v9.1.2139) +Solution: try/catch the expected error + +Patch 9.1.2141 +Problem: Truncation when serializing libsodium encryption parameters. +Solution: Correctly cast to long long type (Yasuhiro Matsumoto). + +Patch 9.1.2142 +Problem: MS-Windows: mouse scroll events not handled for popups +Solution: Do not return early (Mao-Yining) + +Patch 9.1.2143 +Problem: When a popup window partially overlaps a wide character + it results in truncated or garbage display. +Solution: When a wide character is partially blocked by a popup, clear both + cells in the screen buffer to prevent garbage (Yasuhiro Matsumoto). + +Patch 9.1.2144 +Problem: When garbage collection runs, the list of recorded buffer + changes may be incorrectly freed (Sainnhe Park). +Solution: In garbage_collect(), iterate through all buffers and call + set_ref_in_list() for b_recorded_changes to ensure the list + and its contents are marked as reachable (Paul Ollis). + +Patch 9.1.2145 +Problem: intstalltutor Makefile target does not create the tutor/sv dir +Solution: Add the missing mkdir() calls to the Makefile (Ross Burton) + +Patch 9.1.2146 +Problem: filetype: cel files are not recognized +Solution: Detect *.cel files as cel filetype (Stefan VanBuren). + +Patch 9.1.2147 +Problem: Compile warning in strings.c +Solution: Use const qualifier (John Marriott). + +Patch 9.1.2148 +Problem: [security]: Buffer overflow in netbeans special_keys() handling +Solution: Limit writing to max KEYBUFLEN bytes to prevent writing out of + bounds. + +============================================================================== +VERSION 9.3 *version-9.3* *version9.3* *vim-9.3* + +This section is about improvements made between version 9.2 and 9.3 and is +work in progress. + +Popups ~ +------ +- Support for transparency, see |popup-opacity|. +- 'previewpopup' supports the same values as 'completepopup' (except for + "align"). + +Diff mode ~ +--------- +When using inline word diffs, adjacent changes are now merged if the gap +between them is small (5 bytes or less) and contains only non-word characters. +This prevents fragmented highlighting when only whitespace or punctuation +separates changes. + +Restricted mode ~ +--------------- +Using external diff mode or setting environment variables is no longer allowed +when Vim is running in |restricted-mode|. + +Using |:cscope| is no longer allowed. + +Other ~ +----- +- The new |xdg.vim| script for full XDG compatibility is included. +- |ConPTY| support is considered stable as of Windows 11. +- Support for "dap" channel mode for the |debug-adapter-protocol|. +- |status-line| can use several lines, see 'statuslineopt'. +- New "leadtab" value for the 'listchars' setting. + +xxd ~ +--- +Add "-t" option to append a terminating NUL byte to C include output (-i). + + *changed-9.3* +Changed~ +------- +- Support for NeXTStep was dropped with patch v9.2.0122 + + *added-9.3* +Added ~ +----- +Various syntax, indent and other plugins were added. + +Functions: ~ + +|ch_listen()| listen on {address} + +Autocommands: ~ + +|SessionLoadPre| before loading a |Session| file + +Options: ~ + +'statuslineopt' Extra window-local options for the 'statusline', to + configure the height. +'t_BS' Begin synchronized update. +'t_ES' End synchronized update. +'termresize' Method for handling terminal resize events. +'termsync' Enable support for terminal DEC 2026 sync mode. +'winhighlight' Window-local highlight group mappings. + +============================================================================== +PATCHES *patches-9.3* *bug-fixes-9.3* + *patches-after-9.2* vim:tw=78:ts=8:noet:ft=help:norl:fdm=manual:nofoldenable diff --git a/runtime/doc/vi_diff.txt b/runtime/doc/vi_diff.txt index 83558850..d87db7cc 100644 --- a/runtime/doc/vi_diff.txt +++ b/runtime/doc/vi_diff.txt @@ -1,7 +1,7 @@ -*vi_diff.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*vi_diff.txt* For Vim version 9.2. Last change: 2026 Mar 08 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Differences between Vim and Vi *vi-differences* @@ -838,7 +838,8 @@ The following Ex commands are supported by Vi: ~ `:delete` delete lines `:edit` edit a file `:exit` same as `:xit` -`:file` show or set the current file name; Vi: without the column number +`:file` show or set the current file name; Vi: without the column + number `:global` execute commands for matching lines `:insert` insert text `:join` join lines; Vi: not :join! @@ -1360,7 +1361,8 @@ These are remarks about running the POSIX test suite: - ex test 368 fails because shell command isn't echoed in silent mode. - ex test 394 fails because "=" command output isn't visible in silent mode. - ex test 411 fails because test file is wrong, contains stray ':'. -- ex test 475 and 476 fail because reprint output isn't visible in silent mode. +- ex test 475 and 476 fail because reprint output isn't visible in silent + mode. - ex test 480 and 481 fail because the tags file has spaces instead of a tab. - ex test 502 fails because .exrc isn't read in silent mode. - ex test 509 fails because .exrc isn't read in silent mode. and exit code is @@ -1399,6 +1401,6 @@ MS-DOS: | support was dropped with v7.4.1399 MS-Windows XP and Vista: | support was dropped with v9.0.0496 OS/2: | support was dropped with v7.4.1008 RISC OS: | support was dropped with v7.3.0187 -NeXTSTEP: | support was deprecated with v9.1.1727 +NeXTSTEP: | support was dropped with v9.2.0122 vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/vietnamese.txt b/runtime/doc/vietnamese.txt index acd2099b..19994548 100644 --- a/runtime/doc/vietnamese.txt +++ b/runtime/doc/vietnamese.txt @@ -1,7 +1,7 @@ -*vietnamese.txt* For Vim version 9.1. Last change: 2025 Aug 06 +*vietnamese.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Phạm Bình An + VIM REFERENCE MANUAL by Phạm Bình An Vietnamese language support in Vim *vietnamese* *Vietnamese* @@ -10,7 +10,7 @@ Vietnamese language support in Vim *vietnamese* *Vietnamese* 2. Vietnamese keymaps |vietnamese-keymap| 3. Localization |vietnamese-l10n| -=============================================================================== +============================================================================== 1. Introduction *vietnamese-intro* Vim supports Vietnamese language in the following ways: @@ -19,7 +19,7 @@ Vim supports Vietnamese language in the following ways: in |Insert-mode| and |search-commands| using US keyboard layout. - Localization in Vietnamese. See |vietnamese-l10n| -=============================================================================== +============================================================================== 2. Vietnamese keymaps *vietnamese-keymap* To switch between languages you can use your system native keyboard switcher, @@ -44,12 +44,12 @@ Since these keymaps were designed to be minimalistic, they do not support all features of the corresponding input methods. The differences are described below: -- You can only type each character individually, entering the base letter first - and then the diacritics later. For example, to type the word `nến` using - |vietnamese-vni_utf-8|, you must type `ne61n`, not `nen61` or `ne6n1` -- For characters with more than 1 diacritic, you need to type vowel mark before - tone mark. For example, to type `ồ` using |vietnamese-telex_utf-8|, you need - to type `oof`, not `ofo`. +- You can only type each character individually, entering the base letter + first and then the diacritics later. For example, to type the word `nến` + using |vietnamese-vni_utf-8|, you must type `ne61n`, not `nen61` or `ne6n1` +- For characters with more than 1 diacritic, you need to type vowel mark + before tone mark. For example, to type `ồ` using |vietnamese-telex_utf-8|, you + need to type `oof`, not `ofo`. - With |vietnamese-telex_utf-8|, you need to type all uppercase letters to produce uppercase characters with diacritics. For example, `Ừ` must be typed as `UWF`. @@ -61,7 +61,7 @@ below: supported. - Removing diacritics using `z` in Telex or `0` in VNI and VIQR is not supported. -=============================================================================== +============================================================================== 3. Localization *vietnamese-l10n* Vim |messages| are also available in Vietnamese. If you wish to see messages @@ -78,5 +78,5 @@ See |mbyte-first| for details. run the following command in terminal: > vimtutor vi < -=============================================================================== +============================================================================== vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/doc/vim-ja.UTF-8.1 b/runtime/doc/vim-ja.UTF-8.1 index 2a6db2f0..96149d1b 100644 --- a/runtime/doc/vim-ja.UTF-8.1 +++ b/runtime/doc/vim-ja.UTF-8.1 @@ -1,4 +1,4 @@ -.TH VIM 1 "2024 Aug 03" +.TH VIM 1 "2025 Jun 27" .SH 名前 vim \- Vi IMproved, プログラマのテキストエディタ .SH 書式 @@ -138,17 +138,6 @@ rvim rview rgvim rgview .br Note: "+" と "\-c" は合わせて 10 個まで指定できます。 .TP -\-S {file} -一番目のファイルが読み込まれた後に {file} が実行されます。 -これは \-c "source {file}" と同じ動作です。 -{file} の先頭が '\-' の場合は使えません。 -{file} が省略された場合は、"Session.vim" が使われます -(ただし \-S が最後の引数だった場合のみ)。 -.TP -\-\-cmd {command} -"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。 -これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。 -.TP \-A アラビア語がサポートされていて、アラビア語キーマップがある場合は、アラビア語モードで起動します ('arabic' がオンになります)。 右横書きのファイルを編集できます。 @@ -196,27 +185,17 @@ Amiga の場合は、新しいウィンドウで再起動しなくなります を起動して、編集が終わるまで待機したいような場合に使ってください。 Amiga では、":sh" と "!" コマンドは機能しなくなります。 .TP -\-\-nofork -フォアグラウンド。GUI バージョンで、プロセスをフォークしなくなります。 -.TP \-F ペルシア語がサポートされていて、ペルシア語キーマップがある場合は、ペルシア語モードで起動します ('fkmap' と 'rightleft' がオンになります)。 右横書きのファイルを編集できます。 サポートされていない場合はエラーメッセージを表示して終了します。 +.br +注意: ペルシア語サポートはパッチ 8.1.0932 で削除されました。 .TP \-g GUI がサポートされている場合は、GUI で起動します。 サポートされていない場合はエラーメッセージを表示して終了します。 .TP -\-\-gui-dialog-file {name} -GUI の使用時、ダイアログを表示する代わりとして、ファイル {name} へダイアログのタイトルとメッセージを書き込みます。 -ファイルは作成されるか追記されます。 -テストにみ有用で、見ることができないダイアログによってテストが中断されるのを防ぎます。 -GUI 以外ではこの引数は無視されます。 -.TP -\-\-help, \-h, \-? -コマンドライン引数やオプションのヘルプを表示して終了します。 -.TP \-H ヘブライ語がサポートされていて、ヘブライ語キーマップがある場合は、ヘブライ語モードで起動します ('hkmap' と 'rightleft' がオンになります)。 右横書きのファイルを編集できます。 @@ -226,13 +205,13 @@ GUI 以外ではこの引数は無視されます。 初期設定の "~/.viminfo" の代わりに、viminfo ファイルを読み書きする際に使うファイル名を指定します。 "NONE" を指定すると、.viminfo ファイルを使わないように設定できます。 .TP -\-L -\-r と同じです。 -.TP \-l lisp モード。 オプションの 'lisp' と 'showmatch' がオンになります。 .TP +\-L +\-r と同じです。 +.TP \-m ファイルの変更を不可能にします。 オプション 'write' がオフになります。 @@ -243,12 +222,6 @@ lisp モード。 オプションの 'modifiable' と 'write' がオフになり、ファイルの変更と保存ができなくなります。 Note: それらのオプションを設定すれば変更できるようになります。 .TP -\-N -非互換モード。'compatible' オプションがオフになります。 - .vimrc ファイルの有無に関わらず、 -.B Vim -の改良された機能が有効になります。Vi との互換性が少し失われます。 -.TP \-n スワップファイルを使用しません。 クラッシュしてもリカバリできなくなります。 @@ -256,6 +229,12 @@ Note: それらのオプションを設定すれば変更できるようにな ":set uc=0" と設定しても同じです。 戻すには ":set uc=200" と設定してください。 .TP +\-N +非互換モード。'compatible' オプションがオフになります。 + .vimrc ファイルの有無に関わらず、 +.B Vim +の改良された機能が有効になります。Vi との互換性が少し失われます。 +.TP \-nb NetBeans と接続し、エディタサーバーになります。 詳しくはヘルプを参照してください。 @@ -278,15 +257,6 @@ Win32 のみ。親になるアプリケーションのタイトルを指定し {parent-title} が親アプリケーションのウィンドウのタイトルに使われていて、明確に区別できる必要があります。 Note: まだ簡単に実装されているだけです。全てのアプリケーションで動くわけではありません。メニューは機能しません。 .TP -\-R -読み込み専用モード。 -オプション 'readonly' がオンになります。 -バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防ぐことができます。 -ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてください。 -\-R オプションは \-n オプションの効果も含んでいます (上記参照)。 -オプション 'readonly' は ":set noro" でオフにできます。 -詳しくは ":help 'readonly'" を参照してください。 -.TP \-r スワップファイルの一覧を表示します。リカバリに関する情報も表示されます。 .TP @@ -296,6 +266,15 @@ Note: まだ簡単に実装されているだけです。全てのアプリケ スワップファイルは、ファイル名に ".swp" を加えた名前のファイルです。 詳しくは ":help recovery" を参照してください。 .TP +\-R +読み込み専用モード。 +オプション 'readonly' がオンになります。 +バッファを変更することはできますが、間違ってファイルを上書きしてしまうのを防ぐことができます。 +ファイルを保存したい場合は、":w!" のように、Ex コマンドに感嘆符を付けてください。 +\-R オプションは \-n オプションの効果も含んでいます (上記参照)。 +オプション 'readonly' は ":set noro" でオフにできます。 +詳しくは ":help 'readonly'" を参照してください。 +.TP \-s サイレントモード。"ex" という名前で起動するか、"\-e" オプションの後で "\-s" オプションが指定された場合のみ。 @@ -306,6 +285,13 @@ Note: まだ簡単に実装されているだけです。全てのアプリケ これは ":source! {scriptin}" と同じ動作です。 エディタが終了する前にファイルの終わりまで読み込んだ場合、それ以降はキーボードから入力を読み込みます。 .TP +\-S {file} +一番目のファイルが読み込まれた後に {file} が実行されます。 +これは \-c "source {file}" と同じ動作です。 +{file} の先頭が '\-' の場合は使えません。 +{file} が省略された場合は、"Session.vim" が使われます +(ただし \-S が最後の引数だった場合のみ)。 +.TP \-T {terminal} 端末の名前を指定します。 端末が自動的に認識されない場合に使ってください。 @@ -313,15 +299,6 @@ Note: まだ簡単に実装されているだけです。全てのアプリケ が組み込みでサポートしている名前か、 termcap または terminfo ファイルで定義されている名前を指定してください。 .TP -\-\-not-a-term -入力と出力(もしくはどちらか一方)が端末に接続されていないことを、ユーザーが把握しているということを -.B Vim -に伝えます。 -これにより警告が表示され 2 秒間の遅延が発生するのを避けられます。 -.TP -\-\-ttyfail -標準入力か標準出力が端末 (tty) でない場合、すぐに終了します。 -.TP \-u {vimrc} {vimrc} ファイルを使って初期化します。 他の初期化処理はスキップされます。 @@ -335,6 +312,11 @@ termcap または terminfo ファイルで定義されている名前を指定 すべての GUI の初期化をスキップするには "NONE" を指定してください。 詳しくは ":help gui\-init" を参照してください。 .TP +\-v +Vi モードで起動します。 +実行ファイルの名前が "vi" の場合と同じです。 +実行ファイルの名前が "ex" の場合だけ効果があります。 +.TP \-V[N] 冗長モード。 スクリプトファイルを実行したり viminfo ファイルを読み書きするたびにメッセージを表示します。 @@ -346,19 +328,6 @@ N に指定した数値が 'verbose' に設定されます。 その結果、メッセージは表示されずにファイル {filename} に書き出されます。 {filename} は数字で始まってはいけません。 .TP -\-\-log {filename} -もし -.B Vim -がチャネル機能付きでコンパイルされている場合、ログの出力を開始し、ファイル {filename} に書き込みます。 -これは、起動時の非常に早い段階で -.I ch_logfile({filename}, 'ao') -を呼び出すのと同様な動作です。 -.TP -\-v -Vi モードで起動します。 -実行ファイルの名前が "vi" の場合と同じです。 -実行ファイルの名前が "ex" の場合だけ効果があります。 -.TP \-w{number} オプション 'window' を {number} に設定します。 .TP @@ -379,6 +348,9 @@ Vi モードで起動します。 X サーバーと通信しません。端末での起動時間を短くできます。 しかし、ウィンドウタイトルの変更やクリップボードは使えなくなります。 .TP +\-Y +waylandコンポジタに接続しません。 +.TP \-y 簡易モードで起動します。 実行ファイルの名前が "evim" や "eview" の場合と同じです。 @@ -398,16 +370,48 @@ X サーバーと通信しません。端末での起動時間を短くできま 一切の個人設定 (vimrc、プラグイン、その他) を使用しません。 ある問題がクリーンな Vim セットアップで再現するかを確認するのに有用です。 .TP +\-\-cmd {command} +"\-c" と同じですが、vimrc を処理する前にコマンドが実行されます。 +これらのコマンドは "\-c" コマンドとは別に、10 個まで指定できます。 +.TP \-\-echo\-wid GTK GUI のみ: Window ID を標準出力に出力します。 .TP +\-\-gui-\dialog\-file {name} +GUI の使用時、ダイアログを表示する代わりとして、ファイル {name} へダイアログのタイトルとメッセージを書き込みます。 +ファイルは作成されるか追記されます。 +テストにみ有用で、見ることができないダイアログによってテストが中断されるのを防ぎます。 +GUI 以外ではこの引数は無視されます。 +.TP +\-\-help, \-h, \-? +コマンドライン引数やオプションのヘルプを表示して終了します。 +.TP \-\-literal 引数のファイル名をリテラル文字列として扱います。ワイルドカードを展開しません。 Unix のように、シェルがワイルドカードを展開する場合は機能しません。 .TP +\-\-log {filename} +もし +.B Vim +がチャネル機能付きでコンパイルされている場合、ログの出力を開始し、ファイル {filename} に書き込みます。 +これは、起動時の非常に早い段階で +.I ch_logfile({filename}, 'ao') +を呼び出すのと同様な動作です。 +.TP +\-\-nofork +フォアグラウンド。GUI バージョンで、 +.B Vim +はプロセスをフォークしなくなり、開始したシェルからデタッチされます。 +.TP \-\-noplugin プラグインをロードしません。\-u NONE はこの動作を含んでいます。 .TP +\-\-not\-a\-term +入力と出力(もしくはどちらか一方)が端末に接続されていないことを、ユーザーが把握しているということを +.B Vim +に伝えます。 +これにより警告が表示され 2 秒間の遅延が発生するのを避けられます。 +.TP \-\-remote Vim サーバーと通信し、引数に指定されたファイルを Vim サーバーで開きます。 サーバーが存在しない場合は、エラーメッセージを表示され、起動中の Vim でファイルが開かれます。 @@ -433,18 +437,26 @@ Vim サーバーの一覧を表示します。 \-\-servername {name} サーバーの名前を {name} に設定します。 \-\-remote 引数を指定しなかった場合は、起動中の Vim の名前として使われるので、後からその名前を使ってサーバー通信できます。 +バックエンドとしてソケットサーバーを使っている場合、"/", "./" または "../" で始まる名前はソケットへのパスとして扱われます。 +.TP +\-\-clientserver {backend} +クライアントサーバー機能のバックエンドとして {backend} "socket" か "x11" のどちらかを利用します。 +socketserver と X11 の両方の機能を使ってコンパイルした時にだけ利用可能です。 .TP \-\-socketid {id} -GTK GUI のみ: GtkPlug メカニズムを使って gvim を別のウィンドウの中で実行します。 +GTK GUI のみ: GtkPlug メカニズムを使って gVim を別のウィンドウの中で実行します。 .TP \-\-startuptime {file} 起動処理の間、経過時間のメッセージをファイル {fname} に書き出します。 .TP +\-\-ttyfail +標準入力か標準出力が端末 (tty) でない場合、すぐに終了します。 +.TP \-\-version バージョン情報を表示して終了します。 .TP \-\-windowid {id} -Win32 GUI の Vim のみ。ウィンドウ {id} を親ウィンドウにしようと試みます。 +Win32 GUI の Vim のみ。ウィンドウ {id} を gVim の親ウィンドウにしようと試みます。 成功するとそのウィンドウの内側で起動します。 .SH オンラインヘルプ ヘルプを開くには、 @@ -493,14 +505,18 @@ Win32 GUI の Vim のみ。ウィンドウ {id} を親ウィンドウにしよ システムの gvim 初期化ファイル。 .TP ~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc -ユーザーの gvim 初期化ファイル。(最初のものが使われます。) +ユーザーの +.B gVim +初期化ファイル。(最初のものが使われます。) .TP /usr/local/share/vim/vim??/optwin.vim ":options" コマンドで使われるファイル。 オプションを表示したり設定したりできます。 .TP /usr/local/share/vim/vim??/menu.vim -システムのメニュー初期化ファイル。gvim で使います。 +システムのメニュー初期化ファイル。 +.B gVim +で使います。 .TP /usr/local/share/vim/vim??/bugreport.vim バグレポートを生成するスクリプト。":help bugs" 参照。 diff --git a/runtime/doc/vim-sv.1 b/runtime/doc/vim-sv.1 new file mode 100644 index 00000000..7a1c2cb0 --- /dev/null +++ b/runtime/doc/vim-sv.1 @@ -0,0 +1,512 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH VIM 1 "27 juni 2025" +.SH NAMN +vim \- Vi IMproved, en textredigerare fr programmerare +.SH SYNOPSIS +.br +\fBvim\fP [flaggor] [fil ..] +.br +\fBvim\fP [flaggor] \- +.br +\fBvim\fP [flaggor] \-t tagg +.br +\fBvim\fP [flaggor] \-q [felfil] +.PP +.br +\fBex\fP +.br +\fBview\fP +.br +\fBgvim\fP \fBgview\fP \fBevim\fP \fBeview\fP +.br +\fBrvim\fP \fBrview\fP \fBrgvim\fP \fBrgview\fP +.SH BESKRIVNING +\fBVim\fP r en textredigerare som r upptkompatibel med Vi. Den kan anvndas +fr att redigera alla typer av ren text. Den r srskilt anvndbar fr att +redigera program. +.PP +Det finns mnga frbttringar jmfrt med Vi: ngra p flera niver, flera +fnster och buffertar, syntaxmarkering, redigering av kommandoraden, +komplettering av filnamn, onlinehjlp, visuellt val osv. Se ":help +vi_diff.txt" fr en sammanfattning av skillnaderna mellan \fBVim\fP och Vi. +.PP +Nr du kr \fBVim\fP kan du f mycket hjlp frn online\-hjlpsystemet med +kommandot ":help". Se avsnittet ONLINEHJLP nedan. +.PP +Oftast startas \fBVim\fP fr att redigera en enskild fil med kommandot +.PP + vim fil +.PP +Mer generellt startas \fBVim\fP med: +.PP + vim [flaggor] [fillista] +.PP +Om filfrteckningen saknas startar redigeraren med en tom buffert. Annars +kan exakt en av fljande fyra anvndas fr att vlja en eller flera filer +som ska redigeras. +.TP 12 +fil .. +En lista med filnamn. Den frsta filen r den aktuella filen och lses in i +buffertminnet. Markren placeras p den frsta raden i buffertminnet. Du kan +komma t de andra filerna med kommandot ":next". Fr att redigera en fil som +brjar med ett bindestreck, lgg till "\-\-" fre filnamnslistan. +.TP +\- +Filen som ska redigeras lses frn stdin. Kommandon lses frn stderr, som +br vara en tty. +.TP +\-t {tag} +Filen som ska redigeras och den initiala markrpositionen beror p en +"tagg", en sorts goto\-etikett. {tag} sks upp i taggfilen, den associerade +filen blir den aktuella filen och det associerade kommandot exekveras. +Detta anvnds frmst fr C\-program, dr {tag} kan vara ett +funktionsnamn. Effekten blir att filen som innehller den funktionen blir +den aktuella filen och markren placeras i brjan av funktionen. Se ":help +tag\-commands". +.TP +\-q [felfil] +Starta i quickFix\-lge. Filen [errorfile] lses och det frsta felet +visas. Om [errorfile] utelmnas hmtas filnamnet frn flaggan 'errorfile' +(standard r "AztecC.Err" fr Amiga, "errors.err" p andra system). +Ytterligare fel kan hoppas till med kommandot ":cn". Se ":help quickfix". +.PP +\fBVim\fP en fungerar olika beroende p kommandots namn (den krbara filen kan +fortfarande vara samma fil). +.TP 10 +vim +Det "normala" sttet, allt r standard. +.TP +ex +Starta i Ex\-lge. G till normalt lge med kommandot ":vi". Kan ven gras +med argumentet "\-e". +.TP +view +Starta i skrivskyddat lge. Du kommer att skyddas frn att skriva +filerna. Kan ocks gras med argumentet "\-R". +.TP +gvim gview +GUI\-versionen. ppnar ett nytt fnster. Kan ven gras med argumentet +"\-g". +.TP +evim eview +GUI\-versionen i enkelt lge. ppnar ett nytt fnster. Kan ven gras med +argumentet "\-y". +.TP +rvim rview rgvim rgview +Som ovan, men med begrnsningar. Det gr inte att starta shell\-kommandon +eller pausa \fBVim.\fP Kan ocks gras med argumentet "\-Z". +.SH FLAGGOR +Flaggorna kan anges i valfri ordning, fre eller efter filnamnen. Flaggor +utan argument kan kombineras efter ett enda bindestreck. +.TP 12 ++[num] +Fr den frsta filen placeras markren p raden "num". Om "num" saknas +placeras markren p den sista raden. +.TP ++/{pat} +Fr den frsta filen placeras markren p raden dr {pat} frekommer frsta +gngen. Se ":help search\-pattern" fr tillgngliga skmnster. +.TP ++{command} +.TP +\-c {command} +{command} kommer att utfras efter att den frsta filen har lsts. {command} +tolkas som ett Ex\-kommando. Om {command} innehller mellanslag mste det +omges av dubbla citattecken (detta beror p vilket skal som anvnds). +Exempel: vim "+set si" main.c +.br +Obs! Du kan anvnda upp till 10 "+" eller "\-c"\-kommandon. +.TP +\-A +Om \fBVim\fP har kompilerats med ARABIC\-std fr redigering av filer med +skrivriktning frn hger till vnster och arabisk tangentbordskartlggning, +startar denna flagga \fBVim\fP i arabiskt lge, dvs. 'arabic' r instllt. I +annat fall visas ett felmeddelande och \fBVim\fP avbryts. +.TP +\-b +Binrt lge. Ngra flaggor kommer att stllas in som gr det mjligt att +redigera en binr eller krbar fil. +.TP +\-C +Kompatibel. Stll in flaggan "compatible". Detta gr att \fBVim\fP beter sig +ungefr som Vi, ven om det finns en .vimrc\-fil. +.TP +\-d +Starta i diff\-lge. Det br finnas mellan tv och tta filnamnsargument. +\fBVim\fP ppnar alla filer och visar skillnaderna mellan dem. Fungerar som +vimdiff(1). +.TP +\-d {device}, \-dev {device} +ppna {device} fr anvndning som terminal. Endast p Amiga. Exempel: "\-d +con:20/30/600/150". +.TP +\-D +Felskning. G till felskningslge nr du kr det frsta kommandot frn ett +skript. +.TP +\-e +Starta \fBVim\fP i Ex\-lge, precis som om den krbara filen hette "ex". +.TP +\-E +Starta \fBVim\fP i frbttrat Ex\-lge, precis som om den krbara filen hette +"exim". +.TP +\-f +Frgrund. Fr grafiska grnssnittsversionen kommer \fBVim\fP inte att frgrena +sig och kopplas bort frn det skal det startades i. P Amiga startas inte +\fBVim\fP om fr att ppna ett nytt fnster. Denna flagga br anvndas nr +\fBVim\fP krs av ett program som vntar p att redigeringssessionen ska +avslutas (t.ex. e\-post). P Amiga fungerar inte kommandona ":sh" och ":!". +.TP +\-F +Om \fBVim\fP har kompilerats med FKMAP\-std fr redigering av filer med +skrivriktning frn hger till vnster och persisk tangentbordskartlggning, +startar denna flagga \fBVim\fP i persiskt lge, dvs. 'fkmap' och 'rightleft' r +instllda. I annat fall visas ett felmeddelande och \fBVim\fP avbryts. +.br +Obs: Std fr farsi har tagits bort i patch 8.1.0932. +.TP +\-g +Om \fBVim\fP har kompilerats med GUI\-std aktiverar denna flagga grafiskt +grnssnitt. Om inget std fr grafiskt grnssnitt har kompilerats in visas +ett felmeddelande och \fBVim\fP avbryts. +.TP +\-H +Om \fBVim\fP har kompilerats med RIGHTLEFT\-std fr redigering av filer med +hger\-till\-vnster\-orientering och hebreisk tangentbordskartlggning, +startar denna flagga \fBVim\fP i hebreiskt lge, dvs. 'hkmap' och 'rightleft' +r instllda. I annat fall visas ett felmeddelande och \fBVim\fP avbryts. +.TP +\-i {viminfo} +Anger filnamnet som ska anvndas vid lsning eller skrivning av +viminfo\-filen, istllet fr standardnamnet "~/.viminfo". Detta kan ocks +anvndas fr att hoppa ver anvndningen av .viminfo\-filen genom att ange +namnet "NONE". +.TP +\-l +Lisp\-lge. Aktiverar flaggorna "lisp" och "showmatch". +.TP +\-L +Samma som \-r. +.TP +\-m +ndring av filer r inaktiverad. terstller flaggan "write". Du kan +fortfarande ndra buffertminnet, men det gr inte att skriva en fil. +.TP +\-M +ndringar r inte tilltna. Flaggorna "modifiable" och "write" kommer att +inaktiveras, s att ndringar inte r tilltna och filer inte kan +skrivas. Observera att dessa flaggor kan aktiveras fr att mjliggra +ndringar. +.TP +\-n +Ingen vxlingsfil kommer att anvndas. terstllning efter en krasch kommer +att vara omjlig. Praktiskt om du vill redigera en fil p ett mycket +lngsamt medium (t.ex. diskett). Kan ocks gras med ":set uc=0". Kan +ngras med ":set uc=200". +.TP +\-N +Icke\-kompatibelt lge. terstller flaggan "compatible". Detta gr att +\fBVim\fP fungerar ngot bttre, men r mindre kompatibelt med Vi, ven om det +inte finns ngon .vimrc\-fil. +.TP +\-nb +Bli redigeringsserver fr NetBeans. Se dokumentationen fr mer information. +.TP +\-o[N] +ppna N staplade fnster. Om N utelmnas ppnas ett fnster fr varje fil. +.TP +\-O[N] +ppna N fnster bredvid varandra. Om N utelmnas ppnas ett fnster fr +varje fil. +.TP +\-p[N] +ppna N flikar. Om N utelmnas ppnas en flik fr varje fil. +.TP +\-P {parent\-title} +Endast Win32 GUI: Ange titeln p den verordnade applikationen. Nr det r +mjligt kommer Vim att kras i ett MDI\-fnster inuti +applikationen. {parent\-title} mste visas i fnstertiteln fr den +verordnade applikationen. Se till att den r tillrckligt +specifik. Observera att implementeringen fortfarande r primitiv. Den +fungerar inte med alla applikationer och menyn fungerar inte. +.TP +\-r +Lista vxlingsfiler, med information om hur de anvnds fr terstllning. +.TP +\-r {file} +terstllningslge. Swap\-filen anvnds fr att terstlla en kraschad +redigeringssession. Swap\-filen r en fil med samma filnamn som textfilen med +".swp" tillagt. Se ":help recovery". +.TP +\-R +Skrivskyddat lge. Flaggan 'readonly' kommer att aktiveras. Du kan +fortfarande redigera buffertminnet, men du kommer inte att kunna skriva ver +en fil av misstag. Om du vill skriva ver en fil, lgg till ett utropstecken +till Ex\-kommandot, som i ":w!". Flaggan \-R innebr ocks flaggan \-n (se +ovan). Flaggan "readonly" kan terstllas med ":set noro". Se ":help +\&'readonly'". +.TP +\-s +Tyst lge. Endast nr det startas som "Ex" eller nr flaggan "\-e" angavs +fre flaggan "\-s". +.TP +\-s {scriptin} +Skriptfilen {scriptin} lses. Tecknen i filen tolkas som om du hade skrivit +dem. Samma sak kan gras med kommandot ":source! {scriptin}". Om slutet av +filen ns innan redigeraren avslutas lses ytterligare tecken frn +tangentbordet. +.TP +\-S {file} +{file} hmtas efter att den frsta filen har lsts. Detta motsvarar \-c +"source {file}". {file} fr inte brja med '\-'. Om {file} utelmnas anvnds +"Session.vim" (fungerar endast nr \-S r det sista argumentet). +.TP +\-T {terminal} +Anger namnet p den terminal du anvnder fr \fBVim\fP. Krvs endast nr den +automatiska metoden inte fungerar. Br vara en terminal som r knd fr +\fBVim\fP (inbyggd) eller definierad i termcap\- eller terminfo\-filen. +.TP +\-u {vimrc} +Anvnd kommandona i filen {vimrc} fr initialiseringar. Alla andra +initialiseringar hoppas ver. Anvnd detta fr att redigera en speciell typ +av filer. Det kan ocks anvndas fr att hoppa ver alla initialiseringar +genom att ange namnet "NONE". Se ":help initialization" i vim fr mer +information. +.TP +\-U {gvimrc} +Anvnd kommandona i filen {gvimrc} fr GUI\-initialiseringar. Alla andra +GUI\-initialiseringar hoppas ver. Det kan ocks anvndas fr att hoppa ver +alla GUI\-initialiseringar genom att ange namnet "NONE". Se ":help gui\-init" +i vim fr mer information. +.TP +\-v +Starta \fBVim\fP i Vi\-lge, precis som om det krbara programmet hette "vi". +Detta har endast effekt nr det krbara programmet heter "ex". +.TP +\-V[N] +Utfrlig. Ger meddelanden om vilka filer som hmtas och fr lsning och +skrivning av en viminfo\-fil. Det valfria talet N r vrdet fr 'verbose'. +Standardvrdet r 10. +.TP +\-V[N]{filename} +Som \-V och stll in 'verbosefile' till {filename}. Resultatet blir att +meddelanden inte visas utan skrivs till filen {filename}. {filename} fr +inte brja med en siffra. +.TP +\-w{number} +Stll in flaggan "window" till {number}. +.TP +\-w {scriptout} +Alla tecken som du skriver in sparas i filen {scriptout} tills du avslutar +\fBVim\fP. Detta r anvndbart om du vill skapa en skriptfil som ska anvndas +med "vim \-s" eller ":source!". Om filen {scriptout} finns, lggs tecknen +till i slutet av den. +.TP +\-W {scriptout} +Som \-w, men en befintlig fil skrivs ver. +.TP +\-x +Om \fBVim\fP har kompilerats med krypteringsstd, anvnd kryptering nr du +skriver filer. Du kommer att bli ombedd att ange en krypteringsnyckel. +.TP +\-X +Anslut inte till X\-servern. Frkortar starttiden i en terminal, men +fnstertiteln och urklipp kommer inte att anvndas. +.TP +\-Y +Anslut inte till Wayland Compositor +.TP +\-y +Starta \fBVim\fP i enkelt lge, precis som om den krbara filen hette "evim" +eller "eview". Gr att \fBVim\fP beter sig som en klick\-och\-skriv\-editor. +.TP +\-Z +Begrnsat lge. Fungerar som om den krbara filen brjar med "r". +.TP + +Anger slutet p flaggorna. Argument efter detta kommer att behandlas som +ett filnamn. Detta kan anvndas fr att redigera ett filnamn som brjar med +ett '\-'. +.TP +\-\-clean +Anvnd inte ngra personliga instllningar (vimrc, plugins etc.). Anvndbart +fr att se om ett problem uppstr ven med en ren Vim\-installation. +.TP +\-\-cmd {command} +Som att anvnda "\-c", men kommandot exekveras precis innan ngon vimrc\-fil +bearbetas. Du kan anvnda upp till 10 av dessa kommandon, oberoende av +"\-c"\-kommandon. +.TP +\-\-echo\-wid +Endast grafiskt GTK\-grnssnitt: Skriv ut fnster\-id p stdout. +.TP +\-\-gui\-dialog\-file {name} +Nr du anvnder GUI, istllet fr att visa en dialogruta, skriv titeln och +meddelandet i dialogrutan till fil {name}. Filen skapas eller lggs +till. Endast anvndbart fr testning, fr att undvika att testet fastnar i +en dialogruta som inte kan ses. Utan GUI ignoreras argumentet. +.TP +\-\-help, \-h, \-? +Ge lite hjlp om kommandoradsargument och flaggor. Efter detta avslutas +\fBVim\fP. +.TP +\-\-literal +Ta filnamnsargument bokstavligt, expandera inte jokertecken. Detta har ingen +effekt p Unix dr skalet expanderar jokertecken. +.TP +\-\-log {filename} +Om \fBVim\fP har kompilerats med eval\- och kanal\-funktionen, starta loggningen +och skriv poster till {filename}. Detta fungerar som att anropa +\fIch_logfile({filename}, 'ao')\fP mycket tidigt under uppstarten. +.TP +\-\-nofork +Frgrund. Fr grafiska grnssnittsversionen kommer \fBVim\fP inte att frgrena +sig och kopplas bort frn det skal det startades i. +.TP +\-\-noplugin +Hoppa ver inlsning av plugins. Implicerat av \-u NONE. +.TP +\-\-not\-a\-term +Meddelar \fBVim\fP en att anvndaren vet att in\- och/eller utgngen inte r +ansluten till en terminal. Detta frhindrar varningen och den tv sekunders +frdrjning som skulle intrffa. +.TP +\-\-remote +Anslut till en Vim\-server och lt den redigera filerna som anges i resten av +argumenten. Om ingen server hittas visas en varning och filerna redigeras i +den aktuella Vim. +.TP +\-\-remote\-expr {expr} +Anslut till en Vim\-server, utvrdera {expr} i den och skriv ut resultatet p +stdout. +.TP +\-\-remote\-send {keys} +Anslut till en Vim\-server och skicka {keys} till den. +.TP +\-\-remote\-silent +Som \-\-remote, men utan varningen nr ingen server hittas. +.TP +\-\-remote\-wait +Som \-\-remote, men Vim avslutas inte frrn filerna har redigerats. +.TP +\-\-remote\-wait\-silent +Som \-\-remote\-wait, men utan varningen nr ingen server hittas. +.TP +\-\-serverlist +Lista namnen p alla Vim\-servrar som kan hittas. +.TP +\-\-servername {name} +Anvnd {name} som servernamn. Anvnds fr den aktuella Vim, svida det inte +anvnds med ett \-\-remote\-argument, d r det namnet p servern som ska +anslutas till. Om socketserver\-backend anvnds och namnet brjar med "/", +"./" eller "../", tolkas det som en absolut, relativ eller relativ skvg +till socketen. +.TP +\-\-clientserver {backend} +Anvnd {backend} som backend fr clientserver\-funktionalitet, antingen +"socket" eller "x11". Endast tillgngligt nr det kompilerats med bde +socketserver\- och X11\-funktioner +.TP +\-\-socketid {id} +Endast grafiskt GTK\-grnssnitt: Anvnd GtkPlug\-mekanismen fr att kra gVim +i ett annat fnster. +.TP +\-\-startuptime {file} +Skriv tidsmeddelanden till filen {fname} under uppstart. +.TP +\-\-ttyfail +Om stdin eller stdout inte r en terminal (tty) ska programmet avslutas +omedelbart. +.TP +\-\-version +Skriv ut versioninformation och avsluta. +.TP +\-\-windowid {id} +Endast Win32 GUI: F gVim att frska anvnda fnstret {id} som verordnat +fnster, s att det krs inuti det fnstret. +.SH ONLINEHJLP +Skriv ":help" i \fBVim\fP en fr att komma igng. Skriv ":help mne" fr att +f hjlp om ett specifikt mne. Till exempel: ":help ZZ" fr att f hjlp +om kommandot "ZZ". Anvnd <, Tab\-> och CTRL\-D fr att komplettera +mnen (":help cmdline\-completion"). Taggar finns fr att hoppa frn en +plats till en annan (en sorts hypertextlnkar, se ":help"). Alla +dokumentationsfiler kan visas p detta stt, till exempel ":help +syntax.txt". +.SH FILER +.TP 15 +/usr/local/share/vim/vim??/doc/*.txt +\fBVim\fP \-dokumentationsfilerna. Anvnd ":help doc\-file\-list" fr att f en +komplett lista. +.br +\fIvim??\fP r ett kort versionsnummer, till exempel vim91 fr \fBVim 9.1\fP +.TP +/usr/local/share/vim/vim??/doc/tags +Taggfilen som anvnds fr att hitta information i dokumentationsfilerna. +.TP +/usr/local/share/vim/vim??/syntax/syntax.vim +Systemomfattande syntaxinitialiseringar. +.TP +/usr/local/share/vim/vim??/syntax/*.vim +Syntaxfiler fr olika sprk. +.TP +/usr/local/share/vim/vimrc +Systemomfattande initialiseringar av \fBVim\fP. +.TP +~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc +Dina personliga \fBVim\fP \-initialiseringar (den frsta som hittas anvnds). +.TP +/usr/local/share/vim/gvimrc +Systemomfattande gvim\-initialiseringar. +.TP +~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc +Dina personliga \fBgVim\fP \-initialiseringar (den frsta som hittas anvnds). +.TP +/usr/local/share/vim/vim??/optwin.vim +Skript som anvnds fr kommandot ":options", ett smidigt stt att visa och +stlla in flaggor. +.TP +/usr/local/share/vim/vim??/menu.vim +Systemomfattande menyinitialiseringar fr \fBgVim.\fP +.TP +/usr/local/share/vim/vim??/bugreport.vim +Skript fr att generera en felrapport. Se ":help bugs". +.TP +/usr/local/share/vim/vim??/filetype.vim +Skript fr att identifiera filtyp utifrn filnamn. Se ":help 'filetype'". +.TP +/usr/local/share/vim/vim??/scripts.vim +Skript fr att identifiera filtypen utifrn dess innehll. Se ":help +\&'filetype'". +.TP +/usr/local/share/vim/vim??/print/*.ps +Filer som anvnds fr PostScript\-utskrift. +.PP +Fr aktuell information, ls p VIM:s webbsida: +.br + +.SH "SE VEN" +vimtutor(1) +.SH UPPHOVSPERSON +Det mesta av \fBVim\fP har skapats av Bram Moolenaar, med stor hjlp frn +andra. Se ":help credits" i \fBVim.\fP +.br +\fBVim\fP r baserad p Stevie, utvecklad av: Tim Thompson, Tony Andrews och +G.R. (Fred) Walter. ven om nstan ingen av den ursprungliga koden finns +kvar. +.SH BUGGAR +Troligen. Se ":help todo" fr en lista ver knda problem. +.PP +Observera att ett antal saker som vissa kan betrakta som buggar i sjlva +verket beror p att Vi:s beteende reproduceras alltfr troget. Och om du +tycker att andra saker r buggar "eftersom Vi gr det annorlunda" br du +titta nrmare p filen vi_diff.txt (eller skriva :help vi_diff.txt nr du r +i Vim). Titta ocks p flaggorna 'compatible' och 'cpoptions'. +.SH SVENSK VERSTTNING +Vim versattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt sjlva Vim. +Om du hittar fel i versttningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/vim-sv.UTF-8.1 b/runtime/doc/vim-sv.UTF-8.1 new file mode 100644 index 00000000..00b67dd0 --- /dev/null +++ b/runtime/doc/vim-sv.UTF-8.1 @@ -0,0 +1,512 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH VIM 1 "27 juni 2025" +.SH NAMN +vim \- Vi IMproved, en textredigerare för programmerare +.SH SYNOPSIS +.br +\fBvim\fP [flaggor] [fil ..] +.br +\fBvim\fP [flaggor] \- +.br +\fBvim\fP [flaggor] \-t tagg +.br +\fBvim\fP [flaggor] \-q [felfil] +.PP +.br +\fBex\fP +.br +\fBview\fP +.br +\fBgvim\fP \fBgview\fP \fBevim\fP \fBeview\fP +.br +\fBrvim\fP \fBrview\fP \fBrgvim\fP \fBrgview\fP +.SH BESKRIVNING +\fBVim\fP är en textredigerare som är uppåtkompatibel med Vi. Den kan användas +för att redigera alla typer av ren text. Den är särskilt användbar för att +redigera program. +.PP +Det finns många förbättringar jämfört med Vi: ångra på flera nivåer, flera +fönster och buffertar, syntaxmarkering, redigering av kommandoraden, +komplettering av filnamn, onlinehjälp, visuellt val osv. Se ":help +vi_diff.txt" för en sammanfattning av skillnaderna mellan \fBVim\fP och Vi. +.PP +När du kör \fBVim\fP kan du få mycket hjälp från online\-hjälpsystemet med +kommandot ":help". Se avsnittet ONLINEHJÄLP nedan. +.PP +Oftast startas \fBVim\fP för att redigera en enskild fil med kommandot +.PP + vim fil +.PP +Mer generellt startas \fBVim\fP med: +.PP + vim [flaggor] [fillista] +.PP +Om filförteckningen saknas startar redigeraren med en tom buffert. Annars +kan exakt en av följande fyra användas för att välja en eller flera filer +som ska redigeras. +.TP 12 +fil .. +En lista med filnamn. Den första filen är den aktuella filen och läses in i +buffertminnet. Markören placeras på den första raden i buffertminnet. Du kan +komma åt de andra filerna med kommandot ":next". För att redigera en fil som +börjar med ett bindestreck, lägg till "\-\-" före filnamnslistan. +.TP +\- +Filen som ska redigeras läses från stdin. Kommandon läses från stderr, som +bör vara en tty. +.TP +\-t {tag} +Filen som ska redigeras och den initiala markörpositionen beror på en +"tagg", en sorts goto\-etikett. {tag} söks upp i taggfilen, den associerade +filen blir den aktuella filen och det associerade kommandot exekveras. +Detta används främst för C\-program, där {tag} kan vara ett +funktionsnamn. Effekten blir att filen som innehåller den funktionen blir +den aktuella filen och markören placeras i början av funktionen. Se ":help +tag\-commands". +.TP +\-q [felfil] +Starta i quickFix\-läge. Filen [errorfile] läses och det första felet +visas. Om [errorfile] utelämnas hämtas filnamnet från flaggan 'errorfile' +(standard är "AztecC.Err" för Amiga, "errors.err" på andra system). +Ytterligare fel kan hoppas till med kommandot ":cn". Se ":help quickfix". +.PP +\fBVim\fP en fungerar olika beroende på kommandots namn (den körbara filen kan +fortfarande vara samma fil). +.TP 10 +vim +Det "normala" sättet, allt är standard. +.TP +ex +Starta i Ex\-läge. Gå till normalt läge med kommandot ":vi". Kan även göras +med argumentet "\-e". +.TP +view +Starta i skrivskyddat läge. Du kommer att skyddas från att skriva +filerna. Kan också göras med argumentet "\-R". +.TP +gvim gview +GUI\-versionen. Öppnar ett nytt fönster. Kan även göras med argumentet +"\-g". +.TP +evim eview +GUI\-versionen i enkelt läge. Öppnar ett nytt fönster. Kan även göras med +argumentet "\-y". +.TP +rvim rview rgvim rgview +Som ovan, men med begränsningar. Det går inte att starta shell\-kommandon +eller pausa \fBVim.\fP Kan också göras med argumentet "\-Z". +.SH FLAGGOR +Flaggorna kan anges i valfri ordning, före eller efter filnamnen. Flaggor +utan argument kan kombineras efter ett enda bindestreck. +.TP 12 ++[num] +För den första filen placeras markören på raden "num". Om "num" saknas +placeras markören på den sista raden. +.TP ++/{pat} +För den första filen placeras markören på raden där {pat} förekommer första +gången. Se ":help search\-pattern" för tillgängliga sökmönster. +.TP ++{command} +.TP +\-c {command} +{command} kommer att utföras efter att den första filen har lästs. {command} +tolkas som ett Ex\-kommando. Om {command} innehåller mellanslag måste det +omges av dubbla citattecken (detta beror på vilket skal som används). +Exempel: vim "+set si" main.c +.br +Obs! Du kan använda upp till 10 "+" eller "\-c"\-kommandon. +.TP +\-A +Om \fBVim\fP har kompilerats med ARABIC\-stöd för redigering av filer med +skrivriktning från höger till vänster och arabisk tangentbordskartläggning, +startar denna flagga \fBVim\fP i arabiskt läge, dvs. 'arabic' är inställt. I +annat fall visas ett felmeddelande och \fBVim\fP avbryts. +.TP +\-b +Binärt läge. Några flaggor kommer att ställas in som gör det möjligt att +redigera en binär eller körbar fil. +.TP +\-C +Kompatibel. Ställ in flaggan "compatible". Detta gör att \fBVim\fP beter sig +ungefär som Vi, även om det finns en .vimrc\-fil. +.TP +\-d +Starta i diff\-läge. Det bör finnas mellan två och åtta filnamnsargument. +\fBVim\fP öppnar alla filer och visar skillnaderna mellan dem. Fungerar som +vimdiff(1). +.TP +\-d {device}, \-dev {device} +Öppna {device} för användning som terminal. Endast på Amiga. Exempel: "\-d +con:20/30/600/150". +.TP +\-D +Felsökning. Gå till felsökningsläge när du kör det första kommandot från ett +skript. +.TP +\-e +Starta \fBVim\fP i Ex\-läge, precis som om den körbara filen hette "ex". +.TP +\-E +Starta \fBVim\fP i förbättrat Ex\-läge, precis som om den körbara filen hette +"exim". +.TP +\-f +Förgrund. För grafiska gränssnittsversionen kommer \fBVim\fP inte att förgrena +sig och kopplas bort från det skal det startades i. På Amiga startas inte +\fBVim\fP om för att öppna ett nytt fönster. Denna flagga bör användas när +\fBVim\fP körs av ett program som väntar på att redigeringssessionen ska +avslutas (t.ex. e\-post). På Amiga fungerar inte kommandona ":sh" och ":!". +.TP +\-F +Om \fBVim\fP har kompilerats med FKMAP\-stöd för redigering av filer med +skrivriktning från höger till vänster och persisk tangentbordskartläggning, +startar denna flagga \fBVim\fP i persiskt läge, dvs. 'fkmap' och 'rightleft' är +inställda. I annat fall visas ett felmeddelande och \fBVim\fP avbryts. +.br +Obs: Stöd för farsi har tagits bort i patch 8.1.0932. +.TP +\-g +Om \fBVim\fP har kompilerats med GUI\-stöd aktiverar denna flagga grafiskt +gränssnitt. Om inget stöd för grafiskt gränssnitt har kompilerats in visas +ett felmeddelande och \fBVim\fP avbryts. +.TP +\-H +Om \fBVim\fP har kompilerats med RIGHTLEFT\-stöd för redigering av filer med +höger\-till\-vänster\-orientering och hebreisk tangentbordskartläggning, +startar denna flagga \fBVim\fP i hebreiskt läge, dvs. 'hkmap' och 'rightleft' +är inställda. I annat fall visas ett felmeddelande och \fBVim\fP avbryts. +.TP +\-i {viminfo} +Anger filnamnet som ska användas vid läsning eller skrivning av +viminfo\-filen, istället för standardnamnet "~/.viminfo". Detta kan också +användas för att hoppa över användningen av .viminfo\-filen genom att ange +namnet "NONE". +.TP +\-l +Lisp\-läge. Aktiverar flaggorna "lisp" och "showmatch". +.TP +\-L +Samma som \-r. +.TP +\-m +Ändring av filer är inaktiverad. Återställer flaggan "write". Du kan +fortfarande ändra buffertminnet, men det går inte att skriva en fil. +.TP +\-M +Ändringar är inte tillåtna. Flaggorna "modifiable" och "write" kommer att +inaktiveras, så att ändringar inte är tillåtna och filer inte kan +skrivas. Observera att dessa flaggor kan aktiveras för att möjliggöra +ändringar. +.TP +\-n +Ingen växlingsfil kommer att användas. Återställning efter en krasch kommer +att vara omöjlig. Praktiskt om du vill redigera en fil på ett mycket +långsamt medium (t.ex. diskett). Kan också göras med ":set uc=0". Kan +ångras med ":set uc=200". +.TP +\-N +Icke\-kompatibelt läge. Återställer flaggan "compatible". Detta gör att +\fBVim\fP fungerar något bättre, men är mindre kompatibelt med Vi, även om det +inte finns någon .vimrc\-fil. +.TP +\-nb +Bli redigeringsserver för NetBeans. Se dokumentationen för mer information. +.TP +\-o[N] +Öppna N staplade fönster. Om N utelämnas öppnas ett fönster för varje fil. +.TP +\-O[N] +Öppna N fönster bredvid varandra. Om N utelämnas öppnas ett fönster för +varje fil. +.TP +\-p[N] +Öppna N flikar. Om N utelämnas öppnas en flik för varje fil. +.TP +\-P {parent\-title} +Endast Win32 GUI: Ange titeln på den överordnade applikationen. När det är +möjligt kommer Vim att köras i ett MDI\-fönster inuti +applikationen. {parent\-title} måste visas i fönstertiteln för den +överordnade applikationen. Se till att den är tillräckligt +specifik. Observera att implementeringen fortfarande är primitiv. Den +fungerar inte med alla applikationer och menyn fungerar inte. +.TP +\-r +Lista växlingsfiler, med information om hur de används för återställning. +.TP +\-r {file} +Återställningsläge. Swap\-filen används för att återställa en kraschad +redigeringssession. Swap\-filen är en fil med samma filnamn som textfilen med +".swp" tillagt. Se ":help recovery". +.TP +\-R +Skrivskyddat läge. Flaggan 'readonly' kommer att aktiveras. Du kan +fortfarande redigera buffertminnet, men du kommer inte att kunna skriva över +en fil av misstag. Om du vill skriva över en fil, lägg till ett utropstecken +till Ex\-kommandot, som i ":w!". Flaggan \-R innebär också flaggan \-n (se +ovan). Flaggan "readonly" kan återställas med ":set noro". Se ":help +\&'readonly'". +.TP +\-s +Tyst läge. Endast när det startas som "Ex" eller när flaggan "\-e" angavs +före flaggan "\-s". +.TP +\-s {scriptin} +Skriptfilen {scriptin} läses. Tecknen i filen tolkas som om du hade skrivit +dem. Samma sak kan göras med kommandot ":source! {scriptin}". Om slutet av +filen nås innan redigeraren avslutas läses ytterligare tecken från +tangentbordet. +.TP +\-S {file} +{file} hämtas efter att den första filen har lästs. Detta motsvarar \-c +"source {file}". {file} får inte börja med '\-'. Om {file} utelämnas används +"Session.vim" (fungerar endast när \-S är det sista argumentet). +.TP +\-T {terminal} +Anger namnet på den terminal du använder för \fBVim\fP. Krävs endast när den +automatiska metoden inte fungerar. Bör vara en terminal som är känd för +\fBVim\fP (inbyggd) eller definierad i termcap\- eller terminfo\-filen. +.TP +\-u {vimrc} +Använd kommandona i filen {vimrc} för initialiseringar. Alla andra +initialiseringar hoppas över. Använd detta för att redigera en speciell typ +av filer. Det kan också användas för att hoppa över alla initialiseringar +genom att ange namnet "NONE". Se ":help initialization" i vim för mer +information. +.TP +\-U {gvimrc} +Använd kommandona i filen {gvimrc} för GUI\-initialiseringar. Alla andra +GUI\-initialiseringar hoppas över. Det kan också användas för att hoppa över +alla GUI\-initialiseringar genom att ange namnet "NONE". Se ":help gui\-init" +i vim för mer information. +.TP +\-v +Starta \fBVim\fP i Vi\-läge, precis som om det körbara programmet hette "vi". +Detta har endast effekt när det körbara programmet heter "ex". +.TP +\-V[N] +Utförlig. Ger meddelanden om vilka filer som hämtas och för läsning och +skrivning av en viminfo\-fil. Det valfria talet N är värdet för 'verbose'. +Standardvärdet är 10. +.TP +\-V[N]{filename} +Som \-V och ställ in 'verbosefile' till {filename}. Resultatet blir att +meddelanden inte visas utan skrivs till filen {filename}. {filename} får +inte börja med en siffra. +.TP +\-w{number} +Ställ in flaggan "window" till {number}. +.TP +\-w {scriptout} +Alla tecken som du skriver in sparas i filen {scriptout} tills du avslutar +\fBVim\fP. Detta är användbart om du vill skapa en skriptfil som ska användas +med "vim \-s" eller ":source!". Om filen {scriptout} finns, läggs tecknen +till i slutet av den. +.TP +\-W {scriptout} +Som \-w, men en befintlig fil skrivs över. +.TP +\-x +Om \fBVim\fP har kompilerats med krypteringsstöd, använd kryptering när du +skriver filer. Du kommer att bli ombedd att ange en krypteringsnyckel. +.TP +\-X +Anslut inte till X\-servern. Förkortar starttiden i en terminal, men +fönstertiteln och urklipp kommer inte att användas. +.TP +\-Y +Anslut inte till Wayland Compositor +.TP +\-y +Starta \fBVim\fP i enkelt läge, precis som om den körbara filen hette "evim" +eller "eview". Gör att \fBVim\fP beter sig som en klick\-och\-skriv\-editor. +.TP +\-Z +Begränsat läge. Fungerar som om den körbara filen börjar med "r". +.TP + +Anger slutet på flaggorna. Argument efter detta kommer att behandlas som +ett filnamn. Detta kan användas för att redigera ett filnamn som börjar med +ett '\-'. +.TP +\-\-clean +Använd inte några personliga inställningar (vimrc, plugins etc.). Användbart +för att se om ett problem uppstår även med en ren Vim\-installation. +.TP +\-\-cmd {command} +Som att använda "\-c", men kommandot exekveras precis innan någon vimrc\-fil +bearbetas. Du kan använda upp till 10 av dessa kommandon, oberoende av +"\-c"\-kommandon. +.TP +\-\-echo\-wid +Endast grafiskt GTK\-gränssnitt: Skriv ut fönster\-id på stdout. +.TP +\-\-gui\-dialog\-file {name} +När du använder GUI, istället för att visa en dialogruta, skriv titeln och +meddelandet i dialogrutan till fil {name}. Filen skapas eller läggs +till. Endast användbart för testning, för att undvika att testet fastnar i +en dialogruta som inte kan ses. Utan GUI ignoreras argumentet. +.TP +\-\-help, \-h, \-? +Ge lite hjälp om kommandoradsargument och flaggor. Efter detta avslutas +\fBVim\fP. +.TP +\-\-literal +Ta filnamnsargument bokstavligt, expandera inte jokertecken. Detta har ingen +effekt på Unix där skalet expanderar jokertecken. +.TP +\-\-log {filename} +Om \fBVim\fP har kompilerats med eval\- och kanal\-funktionen, starta loggningen +och skriv poster till {filename}. Detta fungerar som att anropa +\fIch_logfile({filename}, 'ao')\fP mycket tidigt under uppstarten. +.TP +\-\-nofork +Förgrund. För grafiska gränssnittsversionen kommer \fBVim\fP inte att förgrena +sig och kopplas bort från det skal det startades i. +.TP +\-\-noplugin +Hoppa över inläsning av plugins. Implicerat av \-u NONE. +.TP +\-\-not\-a\-term +Meddelar \fBVim\fP en att användaren vet att in\- och/eller utgången inte är +ansluten till en terminal. Detta förhindrar varningen och den två sekunders +fördröjning som skulle inträffa. +.TP +\-\-remote +Anslut till en Vim\-server och låt den redigera filerna som anges i resten av +argumenten. Om ingen server hittas visas en varning och filerna redigeras i +den aktuella Vim. +.TP +\-\-remote\-expr {expr} +Anslut till en Vim\-server, utvärdera {expr} i den och skriv ut resultatet på +stdout. +.TP +\-\-remote\-send {keys} +Anslut till en Vim\-server och skicka {keys} till den. +.TP +\-\-remote\-silent +Som \-\-remote, men utan varningen när ingen server hittas. +.TP +\-\-remote\-wait +Som \-\-remote, men Vim avslutas inte förrän filerna har redigerats. +.TP +\-\-remote\-wait\-silent +Som \-\-remote\-wait, men utan varningen när ingen server hittas. +.TP +\-\-serverlist +Lista namnen på alla Vim\-servrar som kan hittas. +.TP +\-\-servername {name} +Använd {name} som servernamn. Används för den aktuella Vim, såvida det inte +används med ett \-\-remote\-argument, då är det namnet på servern som ska +anslutas till. Om socketserver\-backend används och namnet börjar med "/", +"./" eller "../", tolkas det som en absolut, relativ eller relativ sökväg +till socketen. +.TP +\-\-clientserver {backend} +Använd {backend} som backend för clientserver\-funktionalitet, antingen +"socket" eller "x11". Endast tillgängligt när det kompilerats med både +socketserver\- och X11\-funktioner +.TP +\-\-socketid {id} +Endast grafiskt GTK\-gränssnitt: Använd GtkPlug\-mekanismen för att köra gVim +i ett annat fönster. +.TP +\-\-startuptime {file} +Skriv tidsmeddelanden till filen {fname} under uppstart. +.TP +\-\-ttyfail +Om stdin eller stdout inte är en terminal (tty) ska programmet avslutas +omedelbart. +.TP +\-\-version +Skriv ut versioninformation och avsluta. +.TP +\-\-windowid {id} +Endast Win32 GUI: Få gVim att försöka använda fönstret {id} som överordnat +fönster, så att det körs inuti det fönstret. +.SH ONLINEHJÄLP +Skriv ":help" i \fBVim\fP en för att komma igång. Skriv ":help ämne" för att +få hjälp om ett specifikt ämne. Till exempel: ":help ZZ" för att få hjälp +om kommandot "ZZ". Använd <, Tab\-> och CTRL\-D för att komplettera +ämnen (":help cmdline\-completion"). Taggar finns för att hoppa från en +plats till en annan (en sorts hypertextlänkar, se ":help"). Alla +dokumentationsfiler kan visas på detta sätt, till exempel ":help +syntax.txt". +.SH FILER +.TP 15 +/usr/local/share/vim/vim??/doc/*.txt +\fBVim\fP \-dokumentationsfilerna. Använd ":help doc\-file\-list" för att få en +komplett lista. +.br +\fIvim??\fP är ett kort versionsnummer, till exempel vim91 för \fBVim 9.1\fP +.TP +/usr/local/share/vim/vim??/doc/tags +Taggfilen som används för att hitta information i dokumentationsfilerna. +.TP +/usr/local/share/vim/vim??/syntax/syntax.vim +Systemomfattande syntaxinitialiseringar. +.TP +/usr/local/share/vim/vim??/syntax/*.vim +Syntaxfiler för olika språk. +.TP +/usr/local/share/vim/vimrc +Systemomfattande initialiseringar av \fBVim\fP. +.TP +~/.vimrc, ~/.vim/vimrc, $XDG_CONFIG_HOME/vim/vimrc +Dina personliga \fBVim\fP \-initialiseringar (den första som hittas används). +.TP +/usr/local/share/vim/gvimrc +Systemomfattande gvim\-initialiseringar. +.TP +~/.gvimrc, ~/.vim/gvimrc, $XDG_CONFIG_HOME/vim/gvimrc +Dina personliga \fBgVim\fP \-initialiseringar (den första som hittas används). +.TP +/usr/local/share/vim/vim??/optwin.vim +Skript som används för kommandot ":options", ett smidigt sätt att visa och +ställa in flaggor. +.TP +/usr/local/share/vim/vim??/menu.vim +Systemomfattande menyinitialiseringar för \fBgVim.\fP +.TP +/usr/local/share/vim/vim??/bugreport.vim +Skript för att generera en felrapport. Se ":help bugs". +.TP +/usr/local/share/vim/vim??/filetype.vim +Skript för att identifiera filtyp utifrån filnamn. Se ":help 'filetype'". +.TP +/usr/local/share/vim/vim??/scripts.vim +Skript för att identifiera filtypen utifrån dess innehåll. Se ":help +\&'filetype'". +.TP +/usr/local/share/vim/vim??/print/*.ps +Filer som används för PostScript\-utskrift. +.PP +För aktuell information, läs på VIM:s webbsida: +.br + +.SH "SE ÄVEN" +vimtutor(1) +.SH UPPHOVSPERSON +Det mesta av \fBVim\fP har skapats av Bram Moolenaar, med stor hjälp från +andra. Se ":help credits" i \fBVim.\fP +.br +\fBVim\fP är baserad på Stevie, utvecklad av: Tim Thompson, Tony Andrews och +G.R. (Fred) Walter. Även om nästan ingen av den ursprungliga koden finns +kvar. +.SH BUGGAR +Troligen. Se ":help todo" för en lista över kända problem. +.PP +Observera att ett antal saker som vissa kan betrakta som buggar i själva +verket beror på att Vi:s beteende reproduceras alltför troget. Och om du +tycker att andra saker är buggar "eftersom Vi gör det annorlunda" bör du +titta närmare på filen vi_diff.txt (eller skriva :help vi_diff.txt när du är +i Vim). Titta också på flaggorna 'compatible' och 'cpoptions'. +.SH SVENSK ÖVERSÄTTNING +Vim översattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt själva Vim. +Om du hittar fel i översättningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/vim9.txt b/runtime/doc/vim9.txt index 7941b83a..b107d62c 100644 --- a/runtime/doc/vim9.txt +++ b/runtime/doc/vim9.txt @@ -1,4 +1,4 @@ -*vim9.txt* For Vim version 9.1. Last change: 2025 Oct 06 +*vim9.txt* For Vim version 9.2. Last change: 2026 Feb 14 VIM REFERENCE MANUAL by Bram Moolenaar @@ -24,11 +24,12 @@ features in Vim9 script. ------------------------------------------------------------------------------ NOTE: In this vim9.txt help file, the Vim9 script code blocks beginning - with `vim9script` are Vim9 script syntax highlighted. Also, they are - sourceable, meaning you can run them to see what they output. To - source them, use `:'<,'>source` (see |:source-range|), which is done - by visually selecting the line(s) with |V| and typing `:so`. - For example, try it on the following Vim9 script: >vim9 + with `vim9script` (and individual lines starting with `vim9cmd`) are + Vim9 script syntax highlighted. Also, they are sourceable, meaning + you can run them to see what they output. To source them, use + `:'<,'>source` (see |:source-range|), which is done by visually + selecting the line(s) with |V| and typing `:so`. For example, try it + on the following Vim9 script: >vim9 vim9script echowindow "Welcome to Vim9 script!" @@ -63,7 +64,7 @@ dictionary adds quite a lot of overhead. In a Vim9 function this dictionary is not available. Other differences are more subtle, such as how errors are handled. -The Vim9 script syntax and semantics are used in: +Vim9 script syntax, semantics, and behavior apply in: - a function defined with the `:def` command - a script file where the first command is `vim9script` - an autocommand defined in the context of the above @@ -77,18 +78,72 @@ Vim9 script and legacy Vim script can be mixed. There is no requirement to rewrite old scripts, they keep working as before. You may want to use a few `:def` functions for code that needs to be fast. -:vim9[cmd] {cmd} *:vim9* *:vim9cmd* *E1164* - Evaluate and execute {cmd} using Vim9 script syntax and - semantics. Useful when typing a command and in a legacy - script or function. +:vim9[cmd] {cmd} *:vim9* *:vim9cmd* + Evaluate and execute {cmd} using Vim9 script syntax, + semantics, and behavior. Useful when typing a command, + in a `:function`, or a legacy Vim script. + + The following short example shows how a legacy Vim script + command and a :vim9cmd (so Vim9 script context) may appear + similar, though may differ not just syntactically, but also + semantically and behaviorally. >vim + + call popup_notification('entrée'[5:] + \ ->str2list()->string(), #{time: 7000}) + vim9cmd popup_notification('entrée'[5 :] + ->str2list()->string(), {time: 7000}) +< + Notes: 1) The reason for the different output is Vim9 script + uses character indexing whereas legacy Vim script + uses byte indexing - see |vim9-string-index|. + 2) Syntax is different too. In Vim9 script: + - The space in "[5 :]" is mandatory (see + |vim9-white-space|). + - Line continuation with "\" is not required. + - The "#" (to avoid putting quotes around dictionary + keys) is neither required nor allowed - see |#{}|. + + *E1164* + `:vim9cmd` cannot stand alone; it must be followed by a command. + +:leg[acy] {cmd} *:leg* *:legacy* + Evaluate and execute {cmd} using legacy Vim script syntax, + semantics, and behavior. It is only applicable in a Vim9 + script or a `:def` function. Using an equivalent script to + the one, above (see its notes for why the output differs): >vim9 + + vim9script + # Legacy context - so, this creates a popup with [769, 101] + legacy call popup_notification('entrée'[5:] + \ ->str2list()->string(), #{time: 7000}) + # Vim9 script context - so, this creates a pop up with [101] + popup_notification('entrée'[5 :] + ->str2list()->string(), {time: 7000}) +< + Vim9 script script-local variables may be used by prefixing + "s:", like in legacy Vim script. This example shows the + difference in syntax: "k" for the script-local variable in + Vim9 script, "s:k" in the legacy Vim script context. >vim9 + + vim9script + var k: string = "Okay" + echo k + legacy echo s:k +< *E1189* + Using `:legacy` is not allowed in compiled Vim9 script + control flow contexts. For example: >vim9 + + vim9script + def F_1189() + if v:version == 900 + # E1189: Cannot use :legacy with this command: endif + legacy endif + enddef + F_1189() +< *E1234* + `:legacy` cannot stand alone; it must be followed by a command. -:leg[acy] {cmd} *:leg* *:legacy* *E1189* *E1234* - Evaluate and execute {cmd} using legacy script syntax and - semantics. Only useful in a Vim9 script or a :def function. - Note that {cmd} cannot use local variables, since it is parsed - with legacy expression syntax. -See some examples of Vim9 script at |52.6|. ============================================================================== 2. Differences from legacy Vim script *vim9-differences* @@ -103,7 +158,8 @@ script and `:def` functions; details are below: echo "hello " .. yourName .. ", how are you?" -- White space is required in many places to improve readability. +- White space is required in many places to improve readability, + see |vim9-white-space|. - Assign values without `:let` *E1126* , declare variables with `:var`: > var count = 0 count += 3 @@ -231,7 +287,7 @@ You can call a legacy dict function though: > var d = {func: Legacy, value: 'text'} d.func() enddef -< *E1096* *E1174* *E1175* + The argument types and return type need to be specified. The "any" type can be used, type checking will then be done at runtime, like with legacy functions. @@ -274,7 +330,7 @@ script "export" needs to be used for those to be used elsewhere. > def ThisFunction() # script-local def g:ThatFunction() # global export def Function() # for import and import autoload -< *E1058* *E1075* +< *E1075* When using `:function` or `:def` to specify a nested function inside a `:def` function and no namespace was given, this nested function is local to the code block it is defined in. It cannot be used in `function()` with a string @@ -841,7 +897,7 @@ Notes: White space ~ - *E1004* *E1068* *E1069* *E1074* *E1127* *E1202* + *vim9-white-space* *E1004* *E1068* *E1069* *E1074* *E1127* *E1202* Vim9 script enforces proper use of white space. This is no longer allowed: > var name=234 # Error! var name= 234 # Error! @@ -1028,8 +1084,11 @@ empty list and dict is falsy: special true or v:true job when not NULL channel when not NULL - class when not NULL - object when not NULL (TODO: when isTrue() returns true) + class not applicable + object when not NULL + enum not applicable + enum value always + typealias not applicable The boolean operators "||" and "&&" expect the values to be boolean, zero or one: > @@ -1235,69 +1294,245 @@ subtracting one: > Using ++var or --var in an expression is not supported yet. + ============================================================================== 3. New style functions *fast-functions* - *:def* *E1028* + *:def* :def[!] {name}([arguments])[: {return-type}] Define a new function by the name {name}. The body of the function follows in the next lines, until the - matching `:enddef`. *E1073* - *E1011* + matching `:enddef`. + *E1073* + The {name} cannot be reused at the script-local level: >vim9 + + vim9script + def F_1073() + enddef + def F_1073() # E1073: Name already defined: ... + enddef +< *E1011* The {name} must be less than 100 bytes long. - *E1003* *E1027* *E1056* *E1059* - The type of value used with `:return` must match - {return-type}. When {return-type} is omitted or is - "void" the function is not expected to return - anything. - *E1077* *E1123* + + *E1077* {arguments} is a sequence of zero or more argument declarations. There are three forms: {name}: {type} {name} = {value} {name}: {type} = {value} - The first form is a mandatory argument, the caller - must always provide them. - The second and third form are optional arguments. - When the caller omits an argument the {value} is used. + The first form is a mandatory argument. So, the + declaration must provide a type. Example: >vim9 + vim9script + def F_1077(x): void + # E1077: Missing argument type for x + enddef +< + For the second form, because the declaration does not + specify it, Vim infers the type. For both second and + third forms, a default {value} applies when the + caller omits it. Examples: >vim9 + + vim9script + def SecondForm(arg = "Hi"): void + echo $'2. arg is a "{arg->typename()}" type ' .. + $'and the default value of arg is "{arg}"' + enddef + SecondForm() + def ThirdForm(arg2: number = 9): void + echo $'3. default value of arg2 is {arg2}' + enddef + ThirdForm() +< *E1123* + Arguments in a builtin function called in a `:def` + function must have commas between arguments: >vim9 + + vim9script + def F_1123(a: number, b: number): void + echo max(a b) + # E1123: Missing comma before argument: b) + enddef + F_1123(1, 2) +< *E1003* *E1027* *E1096* + The type of value used with `:return` must match + {return-type}. When {return-type} is omitted or is + "void" the function is not allowed to return + anything. Examples: >vim9 + + vim9script + def F_1003(): bool + return # E1003: Missing return value + enddef + F_1003() +< >vim9 + vim9script + def F_1027(): bool + echo false # E1027: Missing return statement + enddef + F_1027() +< >vim9 + vim9script + def F_1096(): void + return false # E1096: Returning a value ... + enddef + F_1096() +< *E1056* *E1059* + When ": {return-type}" is specified, {return-type} + cannot be omitted (leaving a hanging colon). The ": " + also cannot be preceded by white space. Examples: >vim + + def F_1056(): + # E1056: Expected a type: + enddef + def F_1059() : bool + # E1059: No white space allowed before colon:... + enddef +< The function will be compiled into instructions when - called, or when `:disassemble` or `:defcompile` is - used. Syntax and type errors will be produced at that - time. + called or when either `:defcompile` or `:disassemble` is + used. (For an example, see |:disassemble|.) Syntax + and type errors will be produced at that time. + *E1058* It is possible to nest `:def` inside another `:def` or - `:function` up to about 50 levels deep. + `:function` only up to 49 levels deep. At 50 or more + levels, it is a |E1058| error. + *E1117* - [!] is used as with `:function`. Note that - script-local functions cannot be deleted or redefined - later in Vim9 script. They can only be removed by - reloading the same script. + [!] is allowed only in legacy Vim script because it + permits function redefinition (as with `:function`!). + In Vim9 script, ! is not allowed because script-local + functions cannot be deleted or redefined, though they + can be removed by reloading the script. Also, nested + functions cannot use ! for redefinition. Examples: >vim + + " Legacy Vim script :def! example + def! LegacyFunc() + echo "def! is allowed in a legacy Vim script" + enddef + call LegacyFunc() +< >vim9 + vim9script + def Func() + def! InnerFunc() + # E1117: Cannot use ! with nested :def + enddef + enddef + Func() +< >vim9 + vim9script + def! F_477(): void # E477: No ! allowed + enddef +< >vim9 + vim9script + def F_1084(): void + enddef + delfunction! F_1084 + # E1084: Cannot delete Vim9 script function F_1084 +< + Note: The generic error *E1028* ("Compiling :def + function failed") indicates an undeterminable error + during compilation. If reproducible, it may be + reported at https://github.com/vim/vim/issues as + it could represent a gap in Vim's error reporting. *:enddef* *E1057* *E1152* *E1173* -:enddef End of a function defined with `:def`. It should be on - a line by its own. +:enddef End of a function defined with `:def`. It should be on + a line by itself. Examples: >vim9 + vim9script + def MyFunc() + echo 'Do Something' | enddef + # E1057: Missing :enddef +< >vim9 + vim9script + def F_1173() + enddef echo 'X' + # E1173: Text found after enddef: echo 'X' +< >vim9 + vim9script + def F_1152() + function X() + enddef # E1152: Mismatched enddef + enddef +< You may also find this wiki useful. It was written by an early adopter of Vim9 script: https://github.com/lacygoill/wiki/blob/master/vim/vim9.md -If the script the function is defined in is Vim9 script, then script-local -variables can be accessed without the "s:" prefix. They must be defined -before the function is compiled. If the script the function is defined in is -legacy script, then script-local variables must be accessed with the "s:" -prefix if they do not exist at the time of compiling. - *E1269* -Script-local variables in a |Vim9| script must be declared at the script -level. They cannot be created in a function, also not in a legacy function. +If the script the `:def` function is defined in is Vim9 script, script-local +variables must be accessed without using the "s:" prefix. They must be +defined before the function is compiled and there is no way to avoid errors +(e.g., by using |exists()|) to conditionally skip undeclared variables. +For example: >vim9 + + vim9script + def MyVim9def() + echo unus # Echoes 1 + # echo s:unus # This would be E1268 (Cannot use s: in Vim9) + if exists('duo') + # echo duo # This would be E1001 (Variable not found: duo) + endif + enddef + var unus: number = 1 + MyVim9def() # MyVim9def is compiled ("duo" does not exist yet) + var duo: number = 2 +< +If the script the `:def` function is defined in is legacy Vim script, +script-local variables may be accessed with or without the "s:" prefix. +However, using "s:" may defer variable resolution to runtime, avoiding +compilation errors for variables that may not exist yet, as this example +explains: >vim + + " legacy Vim script + def! MyLegacyDef(): void + echo [unus, s:unus] # Echoes [1, 1] + # (If uncommented) First sourcing of 'echo s:duo' is E121 and + # causes a compilation error; subsequent sourcing echoes 2: + # echo s:duo + if exists("s:duo") + # First sourcing: skips echo; subsequent sourcing: echoes 2 + echo s:duo + endif + if exists("duo") + # (If uncommented) First sourcing of 'echo duo' is E1001 and + # causes a compilation error; subsequent sourcing echoes 2: + # echo duo + endif + enddef + let s:unus = 1 + call MyLegacyDef() " Calls MyLegacyDef() and compiles if not already + let s:duo = 2 +< *E1269* +Script-local variables in a Vim9 script must be declared at the script +level. They cannot be created in a `:def` function and may not be declared +in a legacy function with the "s:" prefix. For example: >vim9 + vim9script + function F_1269() + let s:i_wish = v:true + endfunction + F_1269() + # E1269: Cannot create a Vim9 script variable in a function: s:i_wish +< *:defc* *:defcompile* :defc[ompile] Compile functions and classes (|class-compile|) defined in the current script that were not compiled yet. This will report any errors found during compilation. -:defc[ompile] MyClass Compile all methods in a class. |class-compile| + Example: When the three lines (up to and including + `enddef`) are sourced, there is no error because the + Vim9 `:def` function is not compiled. However, if all + four lines are sourced, compilation fails: >vim9 + + vim9script + def F_1027(): string + enddef + defcompile F_1027 # E1027: Missing return statement + +:defc[ompile] MyClass Compile all methods in a class. (See |:disassemble| + for an example.) :defc[ompile] {func} :defc[ompile] debug {func} @@ -1305,16 +1540,35 @@ level. They cannot be created in a function, also not in a legacy function. Compile function {func}, if needed. Use "debug" and "profile" to specify the compilation mode. This will report any errors found during compilation. - {func} call also be "ClassName.functionName" to + {func} can also be "ClassName.functionName" to compile a function or method in a class. - {func} call also be "ClassName" to compile all + {func} can also be "ClassName" to compile all functions and methods in a class. *:disa* *:disassemble* :disa[ssemble] {func} Show the instructions generated for {func}. - This is for debugging and testing. *E1061* - Note that for command line completion of {func} you - can prepend "s:" to find script-local functions. + This is for debugging and testing. + If {func} is not found, error *E1061* occurs. + {func} can also be "ClassName.functionName" to + disassemble a function in a class. + The following example demonstrates using `:defcompile` + with a |class| and `:disassemble` with a + "ClassName.functionName" (positioning the cursor on + the last line of the visually sourced script): >vim9 + + vim9script + class Line + var lnum: number + def new(this.lnum) + enddef + def SetLnum() + cursor(this.lnum, 52) + enddef + endclass + defcompile Line + disassemble Line.SetLnum + var vlast: Line = Line.new(line("'>")) + vlast.SetLnum() # Cursor is positioned here->_ :disa[ssemble] profile {func} Like `:disassemble` but with the instructions used for @@ -1324,192 +1578,304 @@ level. They cannot be created in a function, also not in a legacy function. Like `:disassemble` but with the instructions used for debugging. + Note: For command line completion of {func}, script-local functions + are shown with their . Depending on options, including + |wildmenumode()|, completion may work with "s:", " - def MapList(): list - var list = ['aa', 'bb', 'cc', 'dd'] - return range(1, 2)->map('list[v:val]') - enddef +Variables local to `:def` functions are not visible to string evaluation. +The following example shows that the script-local constant "SCRIPT_LOCAL" is +visible whereas the function-local constant "DEF_LOCAL" is not: >vim9 + vim9script + const SCRIPT_LOCAL = ['A', 'script-local', 'list'] + def MapList(scope: string): list + const DEF_LOCAL: list = ['A', 'def-local', 'list'] + if scope == 'script local' + return [1]->map('SCRIPT_LOCAL[v:val]') + else + return [1]->map('DEF_LOCAL[v:val]') + endif + enddef + echo 'script local'->MapList() # Echoes ['script-local'] + echo 'def local'->MapList() # E121: Undefined variable: DEF_LOCAL +< The map argument is a string expression, which is evaluated without the -function scope. Instead, use a lambda: > +function scope. Instead, in Vim9 script, use a lambda: >vim9 + + vim9script def MapList(): list - var list = ['aa', 'bb', 'cc', 'dd'] - return range(1, 2)->map((_, v) => list[v]) + const DEF_LOCAL: list = ['A', 'def-local', 'list'] + return [1]->map((_, v) => DEF_LOCAL[v]) enddef + echo MapList() # Echoes ['def-local'] +< +For commands that are not compiled, such as `:edit`, |backtick-expansion| can +be used and it can use the local scope. Example: >vim9 -For commands that are not compiled, such as `:edit`, backtick expansion can be -used and it can use the local scope. Example: > - def Replace() - var fname = 'blah.txt' - edit `=fname` + vim9script + def EditNewBlah() + var fname: string = 'blah.txt' + split + edit `=fname` enddef + EditNewBlah() # A new split is created as buffer 'blah.txt' +< +Closures defined in a loop can either share a variable or each have their own +copy, depending on where the variable is declared. With a variable declared +outside the loop, all closures reference the same shared variable. +The following example demonstrates the consequences, with the "outloop" +variable existing only once: >vim9 -Closures defined in a loop will share the same context. For example: > + vim9script var flist: list - for i in range(5) - var inloop = i - flist[i] = () => inloop - endfor - echo range(5)->map((i, _) => flist[i]()) - # Result: [4, 4, 4, 4, 4] + def ClosureEg(n: number): void + var outloop: number = 0 # outloop is declared outside the loop! + for i in range(n) + outloop = i + flist[i] = (): number => outloop # Closures ref the same var + endfor + echo range(n)->map((i, _) => flist[i]()) + enddef + ClosureEg(4) # Echoes [3, 3, 3, 3] +< +All closures put in the list refer to the same instance, which, in the end, +is 3. + +However, when the variable is declared inside the loop, each closure gets its +own copy, as shown in this example: >vim9 + + vim9script + var flist: list + def ClosureEg(n: number): void + for i in range(n) + var inloop: number = i # inloop is declared inside the loop + flist[i] = (): number => inloop # Closures ref each inloop + endfor + echo range(n)->map((i, _) => flist[i]()) + enddef + ClosureEg(4) # Echoes [0, 1, 2, 3] + +Another way to have a separate context for each closure is to call a +function to define it: >vim9 + + vim9script + def GetClosure(i: number): func + var infunc: number = i + return (): number => infunc + enddef + var flist: list + def ClosureEg(n: number): void + for i in range(n) + flist[i] = GetClosure(i) + endfor + echo range(n)->map((i, _) => flist[i]()) + enddef + ClosureEg(4) # Echoes [0, 1, 2, 3] < *E1271* A closure must be compiled in the context that it is defined in, so that -variables in that context can be found. This mostly happens correctly, except -when a function is marked for debugging with `:breakadd` after it was compiled. -Make sure to define the breakpoint before compiling the outer function. - -The "inloop" variable will exist only once, all closures put in the list refer -to the same instance, which in the end will have the value 4. This is -efficient, also when looping many times. If you do want a separate context -for each closure, call a function to define it: > - def GetClosure(i: number): func - var infunc = i - return () => infunc +variables in that context can be found. This mostly happens correctly, +except when a function is marked for debugging with `:breakadd` after it was +compiled. Make sure to define the breakpoint before compiling the outer +function. + *E1248* +In some situations, such as when a Vim9 closure which captures local variables +is converted to a string and then executed, an error occurs. This happens +because the string execution context cannot access the local variables from +the original context where the closure was defined. For example: >vim9 + + vim9script + def F_1248(): void + var n: number + var F: func = () => { + n += 1 + } + try + execute printf("call %s()", F) + catch + echo v:exception + endtry enddef + F_1248() # Vim(call):E1248: Closure called from invalid context - var flist: list - for i in range(5) - flist[i] = GetClosure(i) - endfor - echo range(5)->map((i, _) => flist[i]()) - # Result: [0, 1, 2, 3, 4] - -In some situations, especially when calling a Vim9 closure from legacy -context, the evaluation will fail. *E1248* - -Note that at the script level the loop variable will be invalid after the -loop, also when used in a closure that is called later, e.g. with a timer. -This will generate error |E1302|: > - for n in range(4) - timer_start(500 * n, (_) => { - echowin n - }) - endfor +In Vim9 script, a loop variable is invalid after the loop is closed. +For example, this timer will echo 0 to 2 on separate lines. However, if +the variable "n" is used after the `:endfor`, that is an |E121| error: >vim9 -You need to use a block and define a variable there, and use that one in the -closure: > - for n in range(4) - { - var nr = n - timer_start(500 * n, (_) => { - echowin nr - }) - } + vim9script + for n in range(3) + var nr: number = n + timer_start(1000 * n, (_) => { + echowindow nr + }) endfor - -Using `:echowindow` is useful in a timer, the messages go into a popup and will -not interfere with what the user is doing when it triggers. + try + echowindow n + catch + echo v:exception + endtry +< + Note: Using `:echowindow` is useful in a timer because messages go + into a popup and will not interfere with what the user is + doing when it triggers. -Converting a function from legacy to Vim9 ~ +Converting a :function to a :def~ *convert_legacy_function_to_vim9* -These are the most changes that need to be made to convert a legacy function -to a Vim9 function: + *convert_:function_to_:def* +There are many changes that need to be made to convert a `:function` to +a `:def` function. The following are some of them: +- Change `let` used to declare variables to one of `var`, `const`, or `final`, + and remove the "s:" from each |script-variable|. - Change `func` or `function` to `def`. - Change `endfunc` or `endfunction` to `enddef`. -- Add types to the function arguments. -- If the function returns something, add the return type. -- Change comments to start with # instead of ". +- Add the applicable type (or "any") to each function argument. +- Remove "a:" from each |function-argument|. +- Remove inapplicable options such as |:func-range|, |:func-abort|, + |:func-dict|, and |:func-closure|. +- If the function returns something, add the return type. (Ideally, add + "void" if it does not return anything.) +- Remove line continuation backslashes from places they are not required. +- Remove `let` for assigning values to |g:|, |b:|, |w:|, |t:|, or |l:| variables. +- Rewrite |lambda| expressions in Vim9 script syntax (see |vim9-lambda|). +- Change comments to start with # (preceded by white space) instead of ". +- Insert white space in expressions where required (see |vim9-white-space|). +- Change "." used for string concatenation to " .. ". (Alternatively, use + an |interpolated-string|.) + +The following legacy Vim script and Vim9 script examples demonstrate all +those differences. First, legacy Vim script: >vim + + let s:lnum=0 + function Leg8(arg) abort + let l:pre=['Result', + \': '] + let b:arg=a:arg + let s:lnum+=2 + let b:arg*=4 + let l:result={pre->join(pre,'')}(l:pre) + return l:result.(b:arg+s:lnum)"no space before comment + endfunction + call Leg8(10)->popup_notification(#{time: 3000})" Pops up 'Result: 42' + +The equivalent in Vim9 script: >vim9 - For example, a legacy function: > - func MyFunc(text) - " function body - endfunc -< Becomes: > - def MyFunc(text: string): number - # function body + vim9script + var lnum: number + def Vim9(arg: number): string + final pre = ['Result', + ': '] + b:arg = arg + lnum += 2 + b:arg *= 4 + const RESULT: string = ((lpre) => join(lpre, ''))(pre) + return RESULT .. (b:arg + lnum) # space required before # comment enddef + Vim9(10)->popup_notification({time: 3000}) # Pops up 'Result: 42' -- Remove "a:" used for arguments. E.g.: > - return len(a:text) -< Becomes: > - return len(text) - -- Change `let` used to declare a variable to `var`. -- Remove `let` used to assign a value to a variable. This is for local - variables already declared and b: w: g: and t: variables. - - For example, legacy function: > - let lnum = 1 - let lnum += 3 - let b:result = 42 -< Becomes: > - var lnum = 1 - lnum += 3 - b:result = 42 - -- Insert white space in expressions where needed. -- Change "." used for concatenation to "..". - - For example, legacy function: > - echo line(1).line(2) -< Becomes: > - echo line(1) .. line(2) - -- line continuation does not always require a backslash: > - echo ['one', - \ 'two', - \ 'three' - \ ] -< Becomes: > - echo ['one', - 'two', - 'three' - ] +< Note: This example also demonstrates (outside the `:def` function): + - Removing "#" from the legacy |#{}| - see |vim9-literal-dict| + - Omitting `:call` (allowed, though unnecessary in Vim9 script) -Calling a function in an expr option ~ +Calling a :def function in an expr option ~ *expr-option-function* The value of a few options, such as 'foldexpr', is an expression that is evaluated to get a value. The evaluation can have quite a bit of overhead. -One way to minimize the overhead, and also to keep the option value very -simple, is to define a compiled function and set the option to call it -without arguments. Example: > +One way to minimize the overhead, and also to keep the option value simple, +is to define a compiled function and set the option to call it without +arguments. For example: >vim9 + vim9script - def MyFoldFunc(): any - ... compute fold level for line v:lnum - return level + def MyFoldFunc(): string + # This matches start of line (^), followed by a digit, a full stop + # a space or tab, an uppercase character, with an empty next line + return getline(v:lnum) =~ '^[[:digit:]]\.[[:blank:]][[:upper:]]' + && getline(v:lnum + 1)->empty() ? '>1' : '1' enddef - set foldexpr=s:MyFoldFunc() + set foldexpr=MyFoldFunc() + set foldmethod=expr + norm! zM +< + Warning: This script creates and applies folds at the "Heading 1" level of + this vim9.txt help buffer. (You can use |zR|, in Normal mode, to + open all the folds after sourcing the script.) + ============================================================================== 4. Types *vim9-types* - *E1008* *E1009* *E1010* *E1012* - *E1013* *E1029* *E1030* -The following builtin types are supported: - bool - number - float - string - blob - list<{type}> - dict<{type}> - object<{type}> - job - channel - tuple<{type}> - tuple<{type}, {type}, ...> - tuple<...list<{type}>> - tuple<{type}, ...list<{type}>> - func - func: {type} - func({type}, ...) - func({type}, ...): {type} + +The following types, each shown with its corresponding internal |v:t_TYPE| +variable, are supported: + + number |v:t_number| + string |v:t_string| + func |v:t_func| + func: {type} |v:t_func| + func({type}, ...) |v:t_func| + func({type}, ...): {type} |v:t_func| + list<{type}> |v:t_list| + dict<{type}> |v:t_dict| + float |v:t_float| + bool |v:t_bool| + none |v:t_none| + job |v:t_job| + channel |v:t_channel| + blob |v:t_blob| + class |v:t_class| + object |v:t_object| + typealias |v:t_typealias| + enum |v:t_enum| + enumvalue |v:t_enumvalue| + tuple<{type}> |v:t_tuple| + tuple<{type}, {type}, ...> |v:t_tuple| + tuple<...list<{type}>> |v:t_tuple| + tuple<{type}, ...list<{type}>> |v:t_tuple| void -These types can be used in declarations, but no simple value will actually -have the "void" type. Trying to use a void (e.g. a function without a -return value) results in error *E1031* *E1186* . + *E1031* *E1186* +These types can be used in declarations, though no simple value can have the +"void" type. Trying to use a void as a value results in an error. Examples: >vim9 + + vim9script + def NoReturnValue(): void + enddef + try + const X: any = NoReturnValue() + catch + echo v:exception # E1031: Cannot use void value + try + echo NoReturnValue() + catch + echo v:exception # E1186: Expression does not result in a ... + endtry + endtry +< *E1008* *E1009* *E1010* *E1012* +Ill-formed declarations and mismatching types result in errors. The following +are examples of errors E1008, E1009, E1010, and E1012: >vim9 + + vim9cmd var l: list + vim9cmd var l: list + vim9cmd var l: list = ['42'] +< +There is no array type. Instead, use either a list or a tuple. Those types +may also be literals (constants). In the following example, [5, 6] is a list +literal and (7, ) a tuple literal. The echoed list is a list literal too: >vim9 -There is no array type, use list<{type}> instead. For a list constant an -efficient implementation is used that avoids allocating a lot of small pieces -of memory. + vim9script + var l: list = [1, 2] + var t: tuple<...list> = (3, 4) + echo [l, t, [5, 6], (7, )] +< *tuple-type* -A tuple type can be declared in more or less specific ways: +A tuple type may be declared in the following ways: tuple a tuple with a single item of type |Number| tuple a tuple with two items of type |Number| and |String| @@ -1535,7 +1901,9 @@ variadic tuple must end with a list type. Examples: > var myTuple: tuple<...list> = () < *vim9-func-declaration* *E1005* *E1007* -A partial and function can be declared in more or less specific ways: + *vim9-partial-declaration* + *vim9-func-type* +A function (or partial) may be declared in the following ways: func any kind of function reference, no type checking for arguments or return value func: void any number and type of arguments, no return @@ -1567,352 +1935,892 @@ If the return type is "void" the function does not return a value. The reference can also be a |Partial|, in which case it stores extra arguments and/or a dictionary, which are not visible to the caller. Since they are -called in the same way the declaration is the same. - -Custom types can be defined with `:type`: > - :type MyList list -Custom types must start with a capital letter, to avoid name clashes with -builtin types added later, similarly to user functions. +called in the same way, the declaration is the same. This interactive example +prompts for a circle's radius and returns its area to two decimal places, +using a partial: >vim9 -And classes and interfaces can be used as types: > - :class MyClass - :var mine: MyClass + vim9script + def CircleArea(pi: float, radius: float): float + return pi * radius->pow(2) + enddef + const AREA: func(float): float = CircleArea->function([3.14]) + const RADIUS: float = "Enter a radius value: "->input()->str2float() + echo $"\nThe area of a circle with a radius of {RADIUS} is " .. + $"{AREA(RADIUS)} (π to two d.p.)" +< + *vim9-typealias-type* +Custom types (|typealias|) can be defined with `:type`. They must start with +a capital letter (which avoids name clashes with either current or future +builtin types) similar to user functions. This example creates a list of +perfect squares and reports on |type()| (14, a typealias) and the |typename()|: >vim9 - :interface MyInterface - :var mine: MyInterface + vim9script + type Ln = list + final perfect_squares: Ln = [1, 4, 9, 16, 25] + echo "Typename (Ln): " .. + $"type() is {Ln->type()} and typename() is {Ln->typename()}" +< + *E1105* +A typealias itself cannot be converted to a string: >vim9 - :class MyTemplate - :var mine: MyTemplate - :var mine: MyTemplate + vim9script + type Ln = list + const FAILS: func = (): string => { + echo $"{Ln}" # E1105: Cannot convert typealias to string + } +< + *vim9-class-type* *vim9-interface-type* + *vim9-object-type* +A |class|, |object|, and |interface| may all be used as types. The following +interactive example prompts for a float value and returns the area of two +different shapes. It also reports on the |type()| and |typename()| of the +classes, objects, and interface: >vim9 - :class MyInterface - :var mine: MyInterface - :var mine: MyInterface -{not implemented yet} + vim9script + interface Shape + def InfoArea(): tuple + endinterface + class Circle implements Shape + var radius: float + def InfoArea(): tuple + return ('Circle (π × r²)', 3.141593 * this.radius->pow(2)) + enddef + endclass + class Square implements Shape + var side: float + def InfoArea(): tuple + return ('Square (s²)', this.side->pow(2)) + enddef + endclass + const INPUT: float = "Enter a float value: "->input()->str2float() + echo "\nAreas of shapes:" + var myCircle: object = Circle.new(INPUT) + var mySquare: object = Square.new(INPUT) + final shapes: list = [myCircle, mySquare] + for shape in shapes + const [N: string, A: float] = shape.InfoArea() + echo $"\t- {N} has area of {A}" + endfor + echo "\n\t\ttype()\ttypename()\n\t\t------\t----------" + echo $"Circle\t\t{Circle->type()}\t{Circle->typename()}" + echo $"Square\t\t{Square->type()}\t{Square->typename()}" + echo $"Shape\t\t{Shape->type()}\t{Shape->typename()}" + echo $"MyCircle\t{myCircle->type()}\t{myCircle->typename()}" + echo $"MySquare\t{mySquare->type()}\t{mySquare->typename()}" + echo $"shapes\t\t{shapes->type()}\t{shapes->typename()}" +< + *vim9-enum-type* *vim9-enumvalue-type* +An |enum| may be used as a type (|v:t_enum|). Variables holding enum values +have the enumvalue type (|v:t_enumvalue|) at runtime. The following +interactive example prompts for a character and returns information about +either a square or a rhombus. It also reports on the |type()| and |typename()| +of the enum and enumvalue: >vim9 + vim9script + enum Quad + Square('four', 'only'), + Rhombus('opposite', 'no') + var eq: string + var ra: string + def string(): string + return $"\nA {this.name} has " .. + $"{this.eq} equal sides and {this.ra} right angles\n\n" + enddef + endenum + echo "Rhombus (r) or Square (s)?" + var myQuad: Quad = getcharstr() =~ '\c^R' ? Quad.Rhombus : Quad.Square + echo myQuad.string() .. "\ttype()\ttypename()" + echo $"Quad \t{Quad->type()} \t{Quad->typename()}" + echo $"myQuad\t{myQuad->type()}\t{myQuad->typename()}" +< + Notes: This script uses builtin method "string()" (|object-string()|). + The typename() of Quad and myQuad are the same ("enum") + whereas the type() is distinguished (myQuad returns 16, + enumvalue, whereas Quad returns 15, enum). Variable types and type casting ~ *variable-types* Variables declared in Vim9 script or in a `:def` function have a type, either specified explicitly or inferred from the initialization. -Global, buffer, window and tab page variables do not have a specific type, the -value can be changed at any time, possibly changing the type. Therefore, in -compiled code the "any" type is assumed. - -This can be a problem when the "any" type is undesired and the actual type is -expected to always be the same. For example, when declaring a list: > - var l: list = [1, g:two] -At compile time Vim doesn't know the type of "g:two" and the expression type -becomes list. An instruction is generated to check the list type before -doing the assignment, which is a bit inefficient. - *type-casting* *E1104* -To avoid this, use a type cast: > - var l: list = [1, g:two] -The compiled code will then only check that "g:two" is a number and give an -error if it isn't. This is called type casting. - -The syntax of a type cast is: "<" {type} ">". There cannot be white space -after the "<" or before the ">" (to avoid them being confused with -smaller-than and bigger-than operators). - -The semantics is that, if needed, a runtime type check is performed. The -value is not actually changed. If you need to change the type, e.g. to change -it to a string, use the |string()| function. Or use |str2nr()| to convert a +Global, buffer, window and tab page variables do not have a specific type. +Consequently, their values may change at any time, possibly changing the type. +Therefore, in compiled code, the "any" type is assumed. + +This can be a problem when stricter typing is desired, for example, when +declaring a list: > + var l: list = [1, b:two] +Since Vim doesn't know the type of "b:two", the expression becomes list. +A runtime check verifies the list matches the declared type before assignment. + + *type-casting* +To get more specific type checking, use type casting. This checks the +variable's type before building the list, rather than checking whether +list items match the declared type. For example: > + var l: list = [1, b:two] +< +So, here the type cast checks whether "b:two" is a number and gives an error +if it isn't. + +The difference is demonstrated in the following example. With funcref +variable "NTC", Vim infers the expression type "[1, b:two]" as list, then +verifies whether it can be assigned to the list return type. With +funcref variable "TC", the type cast means Vim first checks whether "b:two" is +a type: >vim9 + + vim9script + b:two = '2' + const NTC: func = (): list => { + return [1, b:two] + } + disassemble NTC # 3 CHECKTYPE list stack [-1] + try + NTC() + catch + echo v:exception .. "\n\n" # expected list but... + endtry + const TC: func = (): list => { + return [1, b:two] + } + disassemble TC # 2 CHECKTYPE number stack [-1] + try + TC() + catch + echo v:exception # expected number but got string + endtry +< + Note: Notice how the error messages differ, showing when + type checking occurs. + + *E1104* +The syntax of a type cast is "<{type}>". An error occurs if either the +opening "<" (|E121|) or closing ">" (E1104) is omitted. Also, white space +is not allowed either after the "<" (|E15|) or before the ">" (|E1068|), which +avoids ambiguity with smaller-than and greater-than operators. + +Although a type casting forces explicit type checking, it neither changes the +value of, nor the type of, a variable. If you need to alter the type, use a +function such as |string()| to convert to a string, or |str2nr()| to convert a string to a number. -If a type is given where it is not expected you can get *E1272* . +If type casting is applied to a chained expression, it must be compatible with +the final result. Examples: >vim9 + + vim9script + # These type casts work + echo >[3, 2, 1]->extend(['Go!']) + echo [3, 2, 1]->extend(['Go!'])->string() + echo >>[3, 2, 1]->list2tuple() + # This type cast fails + echo [3, 2, 1]->extend(['Go!'])->string() +< + *E1272* +If a type is used in a context where types are not expected you can get +E1272. For example: > + :vim9cmd echo islocked('x: string') +< Note: This must be executed from Vim's command line, not sourced. + + *E1363* +If a type is incomplete, such as when an object's class is unknown, E1363 +results. For example: >vim9 + + vim9script + var E1363 = null_class.member # E1363: Incomplete type +< +Another null object-related error is |E1360|: >vim9 -If a type is incomplete you get *E1363* , e.g. when you have an object for -which the class is not known (usually that is a null object). + vim9script + var obj = null_object + var E1360 = obj.MyMethod() # E1360: Using a null object +< Type inference ~ *type-inference* -In general: Whenever the type is clear it can be omitted. For example, when -declaring a variable and giving it a value: > - var name = 0 # infers number type - var name = 'hello' # infers string type - -The type of a list and dictionary comes from the common type of the values. -If the values all have the same type, that type is used for the list or -dictionary. If there is a mix of types, the "any" type is used. > - [1, 2, 3] list - ['a', 'b', 'c'] list - [1, 'x', 3] list - -The common type of function references, if they do not all have the same -number of arguments, uses "(...)" to indicate the number of arguments is not -specified. For example: > - def Foo(x: bool) +Declaring types explicitly provides many benefits, including targeted type +checking and clearer error messages. Nonetheless, Vim often can infer types +automatically when they are omitted. For example, each of these variables' +types are inferred, with the |type()| and |typename()| echoed showing those +inferred types: >vim9 + + vim9script + echo "\t type()\t typename()" + var b = true | echo $"{b} \t {b->type()} \t {b->typename()}" + var f = 4.2 | echo $"{f} \t {f->type()} \t {f->typename()}" + var l = [1, 2] | echo $"{l} \t {l->type()} \t {l->typename()}" + var n = 42 | echo $"{n} \t {n->type()} \t {n->typename()}" + var s = 'yes' | echo $"{s} \t {s->type()} \t {s->typename()}" + var t = (42, ) | echo $"{t} \t {t->type()} \t {t->typename()}" +< +The type of a list, tuple, or dictionary is inferred from the common type of +its values. When the values are all the same type, that type is used. +If there is a mix of types, the "any" type is used. In the following example, +the echoed |typename()| for each literal demonstrates these points: >vim9 + + vim9script + echo [1, 2]->typename() # list + echo [1, 'x']->typename() # list + echo {ints: [1, 2], bools: [false]}->typename() # dict> + echo (true, false)->typename() # tuple +< +The common type of function references, when they do not all have the same +number of arguments, is indicated with "(...)", meaning the number of +arguments is unequal. This script demonstrates a "list": >vim9 + + vim9script + def Foo(x: bool): void enddef - def Bar(x: bool, y: bool) + def Bar(x: bool, y: bool): void enddef var funclist = [Foo, Bar] echo funclist->typename() -Results in: - list +< +Script-local variables in a Vim9 script are type checked. The type is +also checked for variables declared in a legacy function. For example: >vim9 -For script-local variables in Vim9 script the type is checked, also when the -variable was declared in a legacy function. + vim9script + var my_local = (1, 2) + function Legacy() + let b:legacy = [1, 2] + endfunction + Legacy() + echo $"{my_local} is type {my_local->type()} ({my_local->typename()})" + echo $"{b:legacy} is type {b:legacy->type()} ({b:legacy->typename()})" +< + *E1013* +When a type is declared for a List, Tuple, or Dictionary, the type is attached +to it. Similarly, if a type is not declared, the type Vim infers is attached. +In either case, if an expression attempts to change the type, E1013 results. +This example has its type inferred and demonstrates E1013: >vim9 -When a type has been declared this is attached to a List or Dictionary. When -later some expression attempts to change the type an error will be given: > - var ll: list = [1, 2, 3] - ll->extend(['x']) # Error, 'x' is not a number + vim9script + var lb = [true, true] # Two bools, so Vim infers list type + echo lb->typename() # Echoes list + lb->extend([0]) # E1013 Argument 2: type mismatch, ... +< +If you want a permissive list, either explicitly use or declare an +empty list initially (or both, i.e., `list = []`). Examples: >vim9 -If the type is not declared then it is allowed to change: > - [1, 2, 3]->extend(['x']) # result: [1, 2, 3, 'x'] + vim9script + final la: list = [] + echo la->extend(['two', 1]) + final le = [] + echo le->extend(la) +< +Similarly for a permissive dictionary: >vim9 -For a variable declaration an inferred type matters: > - var ll = [1, 2, 3] - ll->extend(['x']) # Error, 'x' is not a number -That is because the declaration looks like a list of numbers, thus is -equivalent to: > - var ll: list = [1, 2, 3] -If you do want a more permissive list you need to declare the type: > - var ll: list = [1, 2, 3] - ll->extend(['x']) # OK + vim9script + final da: dict = {} + echo da->extend({2: 2, 1: 'One'}) + final de = {} + echo de->extend(da)->string() +< +And, although tuples themselves are immutable, permissive tuple concatenation +can be achieved with either "any" or an empty tuple: >vim9 + vim9script + var t_any: tuple<...list> = (3, '2') + t_any = t_any + (true, ) + echo t_any + var t_dec_empty = () + t_dec_empty = t_dec_empty + (3, '2', true) + echo t_dec_empty +< +If a list literal or dictionary literal is not bound to a variable, its type +may change, as this example shows: >vim9 + + vim9script + echo [3, 2, 1]->typename() # list + echo [3, 2, 1]->extend(['Zero'])->typename() # list + echo {1: ['One']}->typename() # dict> + echo {1: ['One']}->extend({2: [2]})->typename() # dict> +< Stricter type checking ~ - *type-checking* + *type-checking* In legacy Vim script, where a number was expected, a string would be automatically converted to a number. This was convenient for an actual number such as "123", but leads to unexpected problems (and no error message) if the string doesn't start with a number. Quite often this leads to hard-to-find -bugs. e.g.: > +bugs. For example, in legacy Vim script this echoes "1": >vim + echo 123 == '123' -< 1 ~ -With an accidental space: > +< +However, if an unintended space is included, "0" is echoed: >vim + echo 123 == ' 123' -< 0 ~ - *E1206* *E1210* *E1212* +< + *E1206* In Vim9 script this has been made stricter. In most places it works just as -before if the value used matches the expected type. There will sometimes be -an error, thus breaking backwards compatibility. For example: -- Using a number other than 0 or 1 where a boolean is expected. *E1023* -- Using a string value when setting a number option. -- Using a number where a string is expected. *E1024* *E1105* +before if the value used matches the expected type. For example, in both +legacy Vim script and Vim9 script trying to use anything other than a +dictionary when it is required: >vim + + echo [8, 9]->keys() + vim9cmd echo [8, 9]->keys() # E1206: Dictionary required +< + *E1023* *E1024* *E1029* *E1030* + *E1174* *E1175* *E1210* *E1212* +However, sometimes there will be an error in Vim9 script, which breaks +backwards compatibility. The following examples illustrate various places +this happens. The legacy Vim script behavior, which does not fail, is shown +first. It is followed by the error that occurs if the same command is used +in Vim9 script. + + - Using a number (except 0 or 1) where a bool is expected: >vim + + echo v:version ? v:true : v:false + vim9cmd echo v:version ? true : false # E1023: Using a Number as a... +< + - Using a number where a string is expected: >vim + + echo filter([1, 2], 0) + vim9cmd echo filter([1, 2], 0) # E1024: Using a Number as a String +< + - Not using a number where a number is expected: >vim + + " In this example, Vim script treats v:false as 0 + function Not1029() + let b:l = [42] | unlet b:l[v:false] + endfunction + call Not1029() | echo b:l +< >vim9 + vim9script + def E1029(): void + b:l = [42] | unlet b:l[false] + enddef + E1029() # E1029: Expected number but got bool +< + - Using a string as a number: >vim + + let b:l = [42] | unlet b:l['#'] | echo b:l + vim9cmd b:l = [42] | vim9cmd unlet b:l['#'] # E1030: Using a string... +< + - Not using a string where an argument requires a string: >vim9 + + echo substitute('Hallo', 'a', 'e', v:true) + vim9cmd echo substitute('Hallo', 'a', 'e', true) # E1174: String... +< + - Using an empty string in an argument that requires a non-empty string: >vim9 + + echo exepath('') + vim9cmd echo exepath('') # E1175: Non-empty string required for arg... +< + - Not using a number when it is required: >vim + + echo gettabinfo('a') + vim9cmd echo gettabinfo('a') # E1210: Number required for argument 1 +< + - Not using a bool when it is required: >vim + + echo char2nr('¡', 2) + vim9cmd echo char2nr('¡', 2) # E1212: Bool required for argument 2 +< + - Not using a number when a number is required (|E521|): >vim + + let &laststatus='2' + vim9cmd &laststatus = '2' +< + - Not using a string when a string is required (|E928|): >vim + + let &langmenu = 42 + vim9cmd &langmenu = 42 # E928: String required +< + - Comparing a |Special| with 'is' fails in some instances (|E1037|, |E1072|): >vim + + " 1 is echoed because these are both true + echo v:null is v:null && v:none is v:none + " 0 is echoed because all these expressions are false + echo v:none is v:null || v:none is 8 || v:true is v:none + " All these are errors in Vim9 script + vim9cmd echo v:null is v:null # E1037: Cannot use 'is' with special + vim9cmd echo v:none is v:none # E1037: Cannot use 'is' with special + vim9cmd echo v:none is v:null # E1037: Cannot use 'is' with special + vim9cmd echo v:none is 8 # E1072: Cannot compare special with numb + vim9cmd echo v:true is v:none # E1072: Cannot compare bool with special +< + Note: Although the last two Vim9 script examples above error using + `v:none`, they return `false` using `null` (which is the same + as `v:null` - see |v:null|): >vim9 + + vim9script + echo null is 8 # false + echo true is null # false +< + - Using a string where a bool is required (|E1135|): >vim + echo '42' ? v:true : v:false + vim9cmd echo '42' ? true : false # E1135: Using a String as a Bool +< + - Using a bool as a number (|E1138|): >vim + + let &laststatus=v:true + vim9cmd &laststatus = true +< + - Not using a string where an argument requires a string (|E1174|) >vim + + echo substitute('Hallo', 'a', 'e', v:true) + vim9cmd echo substitute('Hallo', 'a', 'e', true) # E1174: String... +< One consequence is that the item type of a list or dict given to |map()| must -not change, if the type was declared. This will give an error in Vim9 -script: > - var mylist: list = [1, 2, 3] - echo map(mylist, (i, v) => 'item ' .. i) -< E1012: Type mismatch; expected number but got string in map() ~ - -Instead use |mapnew()|, it creates a new list: > - var mylist: list = [1, 2, 3] - echo mapnew(mylist, (i, v) => 'item ' .. i) -< ['item 0', 'item 1', 'item 2'] ~ - -If the item type was not declared or determined to be "any" it can change to a -more specific type. E.g. when a list of mixed types gets changed to a list of -strings: > - var mylist = [1, 2.0, '3'] - # typename(mylist) == "list" - map(mylist, (i, v) => 'item ' .. i) - # typename(mylist) == "list", no error - -There is a subtle difference between using a list constant directly and -through a variable declaration. Because of type inference, when using a list -constant to initialize a variable, this also sets the declared type: > - var mylist = [1, 2, 3] - # typename(mylist) == "list" - echo map(mylist, (i, v) => 'item ' .. i) # Error! - -When using the list constant directly, the type is not declared and is allowed -to change: > - echo map([1, 2, 3], (i, v) => 'item ' .. i) # OK - -The reasoning behind this is that when a type is declared and the list is -passed around and changed, the declaration must always hold. So that you can -rely on the type to match the declared type. For a constant this is not -needed. - - *E1158* -Same for |extend()|, use |extendnew()| instead, and for |flatten()|, use -|flattennew()| instead. Since |flatten()| is intended to always change the -type, it can not be used in Vim9 script. +not change when its type is either declared or inferred. For example, this +gives an error in Vim9 script, whereas in legacy Vim script it is allowed: >vim + + " legacy Vim script changes s:mylist to ['item 0', 'item 1'] + let s:mylist = [0, 1] + call map(s:mylist, {i -> $"item {i}"}) + echo s:mylist +< >vim9 + vim9script + var mylist = [0, 1] # Vim infers mylist is list + map(mylist, (i, _) => $"item {i}") # E1012: type mismatch... +< +The error occurs because `map()` tries to modify the list elements to strings, +which conflicts with the declared type. + +Use |mapnew()| instead. It creates a new list, and Vim infers its type if it +is not specified. Inferred and declared types are shown in this example: >vim9 + + vim9script + var mylist = [0, 1] + var infer = mylist->mapnew((i, _) => $"item {i}") + echo [infer, infer->typename()] + var declare: list = mylist->mapnew((i, _) => $"item {i}") + echo [declare, declare->typename()] +< +The key concept here is, variables with declared or inferred types cannot +have the types of the elements within their containers change. However, type +"changes" are allowed for either: + - a container literal (not bound to a variable), or + - a container where |copy()| or |deepcopy()| is used in method chaining. +Both are demonstrated in this example: >vim9 + + vim9script + # list literal + echo [1, 2]->map((_, v) => $"#{v}") + echo [1, 2]->map((_, v) => $"#{v}")->typename() + # deepcopy() in a method chain + var mylist = [1, 2] + echo mylist->deepcopy()->map((_, v) => $"#{v}") + echo mylist->deepcopy()->map((_, v) => $"#{v}")->typename() + echo mylist +< +The reasoning behind this is, when a type is either declared or inferred +and the list is passed around and changed, the declaration/inference must +always hold so that you can rely on the type to match the declared/inferred +type. For either a list literal or a fully copied list, that type safety is +not needed because the original list is unchanged (as "echo mylist" shows, +above). + +If the item type was not declared or determined to be "", it will not +change, even if all items later become the same type. However, when `mapnew()` +is used, inference means that the new list will reflect the type(s) present. +For example: >vim9 + + vim9script + # list + var mylist = [1, '2'] # mixed types, i.e., list + echo (mylist, mylist->typename()) # ([1, '2'], 'list') + mylist->map((_, v) => $"item {v}") # all items are now strings + echo (mylist, mylist->typename()) # both strings, but list + # mapnew() + var newlist = mylist->mapnew((_, v) => v) + echo (newlist, newlist->typename()) # newlist is a list +< +Using |extend()| and |extendnew()| is similar, i.e., a list literal may use +the former, so, this is okay: >vim9 + + vim9cmd echo [1, 2]->extend(['3']) # [1, 2, 3] +< +whereas, this is not: >vim9 + + vim9script + var mylist: list = [1, 2] + echo mylist->extend(['3']) # E1013: Argument 2: type mismatch +< +Using |extendnew()| is needed for extending an existing typed list, except +where the extension matches the list's type (or it is "any"). For example, +first extending with an element of the same type, then extending with a +different type: >vim9 + + vim9script + var mylist: list = [1, 2] + mylist->extend([3]) + echo mylist->extendnew(['4']) # [1, 2, 3, '4'] + +< *E1158* +Using |flatten()| is not allowed in Vim9 script, because it is intended +always to change the type. This even applies to a list literal +(unlike |map()| and |extend()|). Instead, use |flattennew()|: >vim9 + vim9cmd [1, [2, 3]]->flatten() # E1158: Cannot use flatten + vim9cmd echo [1, [2, 3]]->flattennew() # [1, 2, 3] +< Assigning to a funcref with specified arguments (see |vim9-func-declaration|) -does strict type checking of the arguments. For variable number of arguments -the type must match: > - var FuncRef: func(string, number, bool): number - FuncRef = (v1: string, v2: number, v3: bool) => 777 # OK - FuncRef = (v1: string, v2: number, v3: number) => 777 # Error! - # variable number of arguments must have same type - var FuncVA: func(...list): number - FuncVA = (...v: list): number => v # Error! - FuncVA = (...v: list): number => v # OK, `any` runtime check - FuncVA = (v1: string, v: string2): number => 333 # Error! - FuncVA = (v: list): number => 3 # Error! - -If the destination funcref has no specified arguments, then there is no -argument type checking: > - var FuncUnknownArgs: func: number - FuncUnknownArgs = (v): number => v # OK - FuncUnknownArgs = (v1: string, v2: string): number => 3 # OK - FuncUnknownArgs = (...v1: list): number => 333 # OK -< - *E1211* *E1217* *E1218* *E1219* *E1220* *E1221* - *E1222* *E1223* *E1224* *E1225* *E1226* *E1227* - *E1228* *E1235* *E1238* *E1250* *E1251* *E1252* - *E1253* *E1256* *E1297* *E1298* *E1301* *E1528* - *E1529* *E1530* *E1531* *E1534* +involves strict type checking of the arguments. For example, this works: >vim9 + + vim9script + var F_name_age: func(string, number): string + F_name_age = (n: string, a: number): string => $"Name: {n}, Age: {a}" + echo F_name_age('Bob', 42) +< +whereas this fails with error |E1012| (type mismatch): >vim9 + + vim9script + var F_name_age: func(string, number): string + F_name_age = (n: string, a: string): string => $"Name: {n}, Age: {a}" +< +If there is a variable number of arguments they must have the same type, as in +this example: >vim9 + + vim9script + var Fproduct: func(...list): number + Fproduct = (...v: list): number => reduce(v, (a, b) => a * b) + echo Fproduct(3, 2, 4) # Echoes 24 +< +And may be used to accommodate mixed types: >vim9 + + vim9script + var FlatSort: func(...list): any + FlatSort = (...v: list) => flattennew(v)->sort('n') + echo FlatSort(true, [[[5, 3], 2], 4]) # Echoes [true, 2, 3, 4, 5] +< + Note: Using in a lambda does not avoid type checking of the + funcref. It remains constrained by the declared funcref's + type and, as these examples show, a runtime or compiling error + occurs when the types mismatch: >vim9 + + vim9script + var FuncSN: func(string): number + FuncSN = (v: any): number => v->str2nr() + echo FuncSN('162')->nr2char() # Echoes ¢ + echo FuncSN(162)->nr2char()) # E1013 (runtime error) +< >vim9 + vim9script + var FuncSN: func(string): number + FuncSN = (v: any): number => v->str2nr() + def FuncSNfail(): void + echo FuncSN('162')->nr2char() # No echo because ... + echo FuncSN(162)->nr2char() # Error while compiling + enddef + FuncSNfail() +< +When the funcref has no arguments specified, there is no type checking. This +example shows FlexArgs has a string argument the first time and a list the +following time: >vim9 + + vim9script + var FlexArgs: func: string + FlexArgs = (s: string): string => $"It's countdown time {s}..." + echo FlexArgs("everyone") + FlexArgs = (...values: list): string => join(values, ', ') + echo FlexArgs('3', '2', '1', 'GO!') +< + *E1211* *E1217* *E1218* *E1219* *E1220* + *E1221* *E1222* *E1223* *E1224* *E1225* + *E1226* *E1228* *E1235* *E1238* *E1251* + *E1253* *E1256* *E1297* *E1298* *E1301* + *E1528* *E1529* *E1530* *E1531* *E1534* Types are checked for most builtin functions to make it easier to spot -mistakes. +mistakes. The following one-line |:vim9| commands, calling builtin functions, +demonstrate many of those type-checking errors: >vim9 + + vim9 9->list2blob() # E1211: List required for argume... + vim9 9->ch_close() # E1217: Channel or Job required ... + vim9 9->job_info() # E1218: Job required for argumen... + vim9 [9]->cos() # E1219: Float or Number required... + vim9 {}->remove([]) # E1220: String or Number require... + vim9 null_channel->ch_evalraw(9) # E1221: String or Blob required ... + vim9 9->col() # E1222: String or List required ... + vim9 9->complete_add() # E1223: String or Dictionary req... + vim9 setbufline(9, 9, {}) # E1224: String, Number or List r... + vim9 9->count(9) # E1225: String, List, Tuple or D... + vim9 9->add(9) # E1226: List or Blob required fo... + vim9 9->remove(9) # E1228: List, Dictionary, or Blo... + vim9 getcharstr('9') # E1235: Bool or number required ... + vim9 9->blob2list() # E1238: Blob required for argume... + vim9 9->filter(9) # E1251: List, Tuple, Dictionary,... + vim9 9->reverse() # E1253: String, List, Tuple or B... + vim9 9->call(9) # E1256: String or Function requi... + vim9 null_dict->winrestview() # E1297: Non-NULL Dictionary requ... + vim9 {}->prop_add_list(null_list) # E1298: Non-NULL List required f... + vim9 {}->repeat(9) # E1301: String, Number, List, Tu... + vim9 9->index(9) # E1528: List or Tuple or Blob re... + vim9 9->join() # E1529: List or Tuple required f... + vim9 9->max() # E1530: List or Tuple or Diction... + vim9 9->get(9) # E1531: Argument of get() must b... + vim9 9->tuple2list() # E1534: Tuple required for argum... +< +Reserved for future use: *E1227* *E1250* *E1252* + E1227: List or Dictionary required for argument %d + E1250: Argument of %s must be a List, String, Dictionary or Blob + E1252: String, List or Blob required for argument %d + Categories of variables, defaults and null handling ~ - *variable-categories* *null-variables* -There are categories of variables: + *variable-categories* *null-variables* +There are three categories of variables: primitive number, float, boolean container string, blob, list, tuple, dict specialized function, job, channel, user-defined-object When declaring a variable without an initializer, an explicit type must be -provided. Each category has different default initialization semantics. Here's -an example for each category: > - var num: number # primitives default to a 0 equivalent - var cont: list # containers default to an empty container - var spec: job # specialized variables default to null -< -Vim does not have a familiar null value; it has various null_ predefined -values, for example |null_string|, |null_list|, |null_job|. Primitives do not -have a null_. The typical use cases for null_ are: -- to clear a variable and release its resources; -- as a default for a parameter in a function definition, see |null-compare|. +provided. Each category has different default initialization semantics. + +Primitives default to type-specific values. All primitives are empty but do +not equal `null`: >vim9 + + vim9script + var n: number | echo [n, n->empty(), n == null] # [0, 1, false] + var f: float | echo [f, f->empty(), f == null] # [0.0, 1, false] + var b: bool | echo [b, b->empty(), b == null] # [false, 1, false] +< +Containers default to an empty container. Only an empty string equals `null`: >vim9 + + vim9script + var s: string | echo [s, s->empty(), s == null] # ['', 1, true] + var z: blob | echo [z, z->empty(), z == null] # [0z, 1, false] + var l: list | echo [l, l->empty(), l == null] # [[], 1, false] + var t: tuple | echo [t, t->empty(), t == null] # [(), 1, false] + var d: dict | echo [d, d->empty(), d == null] # [{}, 1, false] +< +Specialized types default to equaling `null`: >vim9 + + vim9script + var F: func | echo [F, F == null] # [function(''), true] + var j: job | echo [j, j == null] # ['no process', true] + var c: channel | echo [c, c == null] # ['channel fail', true] + class Class + endclass + var o: Class | echo [o, o == null] # [object of [unknown], true] + enum Enum + endenum + var e: Enum | echo [e, e == null] # [object of [unknown], true] +< + Note: See |empty()| for explanations of empty job, empty channel, and + empty object types. + +Vim does not have a familiar null value. Instead, it has various null_ +predefined values including |null_string|, |null_list|, and |null_job|. +Primitives do not have a null_. Typical use cases for null_ are: + - to clear a variable and release its resources, + - as a default for a parameter in a function definition (for an example, + see |null_blob|), or + - assigned to a container or specialized variable to set it to null + for later comparison (for an example, see |null-compare|). For a specialized variable, like `job`, null_ is used to clear the -resources. For a container variable, resources can also be cleared by -assigning an empty container to the variable. For example: > - var j: job = job_start(...) - # ... job does its work - j = null_job # clear the variable and release the job's resources - - var l: list - # ... add lots of stuff to list - l = [] # clear the variable and release container resources -Using the empty container, rather than null_, to clear a container -variable may avoid null complications as described in |null-anomalies|. +resources. For example: >vim9 + + vim9script + var mydate: list + def Date(channel: channel, msg: string): void + mydate->add(msg) + enddef + var myjob = job_start([&shell, &shellcmdflag, 'date'], {out_cb: Date}) + echo [myjob, myjob->job_status()] + sleep 2 + echo $"The date and time is {mydate->join('')}" + echo [myjob, myjob->job_status()] + myjob = null_job # Clear the variable; release the job's resources. + echo myjob +< +For a container variable, resources may also be cleared by assigning an +empty container to the variable. For example: >vim9 + + vim9script + var perfect: list = [1, 4] + perfect->extend([9, 16, 25]) + perfect = [] + echo perfect + +Using an empty container, rather than null_, to clear a container +variable may avoid null complications - see |null-anomalies|. The initialization semantics of container variables and specialized variables -differ. An uninitialized container defaults to an empty container: > - var l1: list # empty container - var l2: list = [] # empty container - var l3: list = null_list # null container -"l1" and "l2" are equivalent and indistinguishable initializations; but "l3" -is a null container. A null container is similar to, but different from, an -empty container, see |null-anomalies|. - -Specialized variables default to null. These job initializations are -equivalent and indistinguishable: > +differ. For containers: + - An uninitialized container defaults to empty but does not equal `null` + (except for a uninitialized string). + - A container initialized to [], (), {}, "", or 0z is empty but does not + equal `null`. + - A container initialized as null_ defaults to empty and equals `null`. + +In the following example, the uninitialized list ("lu") and [] initialized +list ("li") are equivalent and indistinguishable whereas "ln" is a null +container, which is similar to, but not equivalent to, an empty container +(see |null-anomalies|). >vim9 + + vim9script + # uninitialized: empty container, not null + var lu: list + echo ['lu', $"empty={lu->empty()}", $"null={lu == null}"] + # initialized: empty container, not null + var li: list = [] + echo ['li', $"empty={li->empty()}", $"null={li == null}"] + # initialized: empty container, null + var ln: list = null_list + echo ['ln', $"empty={ln->empty()}", $"null={ln == null}"] +< +Specialized variables default to equaling null. These job initializations +are equivalent and indistinguishable: >vim9 + + vim9script var j1: job var j2: job = null_job var j3 = null_job + echo (j1 == j2) == (j2 == j3) # true (equivalent, indistinguishable) +< +When a list, tuple, or dict is declared, if the item type is not specified +it cannot be inferred. Consequently, the item type defaults to "any": >vim9 -When a list or dict is declared, if the item type is not specified and can not -be inferred, then the type is "any": > - var d1 = {} # type is "dict" - var d2 = null_dict # type is "dict" - -Declaring a function, see |vim9-func-declaration|, is particularly unique. + vim9script + var [t1, t2] = [(), null_tuple] + echo $'t1 is {t1->typename()} and t2 is {t2->typename()} too' +< +Tuples and functions (or partials) may be declared in various ways. +See |tuple-type|, |variadic-tuple|, and |vim9-func-declaration|. *null-compare* -For familiar null compare semantics, where a null container is not equal to -an empty container, do not use null_ in a comparison: > +For familiar null compare semantics, where an empty container is not equal to +a null container, do not use null_ in a comparison. That is because, +in Vim9 script, although null_ == `null`, comparing an: + + - empty container to `null` is `false`, but + - empty container to null_ is `true`. + +So, compare against `null`, not null_. For example: >vim9 + vim9script - def F(arg: list = null_list) - if arg == null - echo "null" - else - echo printf("not null, %sempty", empty(arg) ? '' : 'not ') - endif + var bonds: dict> = {g: ['007', '008'], o: ['007', '009']} + def Search(query: string): list + return query == "\r" ? null_list : bonds->get(query, []) enddef - F() # output: "null" - F(null_list) # output: "null" - F([]) # output: "not null, empty" - F(['']) # output: "not null, not empty" -The above function takes a list of strings and reports on it. -Change the above function signature to accept different types of arguments: > - def F(arg: list = null_list) # any type of list - def F(arg: any = null) # any type -< -In the above example, where the goal is to distinguish a null list from an -empty list, comparing against `null` instead of `null_list` is the correct -choice. The basic reason is because "null_list == null" and "[] != null". -Comparing to `null_list` fails since "[] == null_list". In the following section -there are details about comparison results. + echo "Goldfinger (g) or Octopussy (o)?: " + const C: string = getcharstr() + var result: list = C->Search() + if result == null # <<< DO NOT USE null_list HERE! + echo "Error: Nothing was entered" + else + echo result->empty() ? $"No matches for '{C}'" : $"{result}" + endif +< + NOTE: Using "result == null_list" instead of "result == null" would + fail to distinguish the error (nothing entered) and the valid + (nothing matched) result because [] == null_list whereas + [] != null. + +Conceptually, think of the null_ construct as a hybrid/bridge between +the general `null` and typed `empty` containers, having properties of both. +In the following section there are details about comparison results. *null-details* *null-anomalies* This section describes issues about using null and null_; included below -are the enumerated results of null comparisons. In some cases, if familiar -with vim9 null semantics, the programmer may chose to use null_ in +are the enumerated results of null comparisons. In some cases, if familiar +with vim9 null semantics, the programmer may choose to use null_ in comparisons and/or other situations. -Elsewhere in the documentation it says: - Quite often a null value is handled the same as an empty value, but - not always -Here's an example: > - vim9script - var s1: list - var s2: list = null_list - echo s1 # output: "[]" - echo s2 # output: "[]" - - echo s1 + ['a'] # output: "['a']" - echo s2 + ['a'] # output: "['a']" - - echo s1->add('a') # output: "['a']" - echo s2->add('a') # E1130: Can not add to null list -< -Two values equal to a null_ are not necessarily equal to each other: > - vim9script - echo {} == null_dict # true - echo null_dict == null # true - echo {} == null # false -< -Unlike the other containers, an uninitialized string is equal to null. The -'is' operator can be used to determine if it is a null_string: > - vim9script - var s1: string - var s2 = null_string - echo s1 == null # true - this is unexpected - echo s2 == null # true - echo s2 is null_string # true - - var b1: blob - var b2 = null_blob - echo b1 == null # false - echo b2 == null # true -< -Any variable initialized to the null_ is equal to the null_ and is -also equal to null. For example: > - vim9script - var x = null_blob - echo x == null_blob # true - echo x == null # true -< -An uninitialized variable is usually equal to null; it depends on its type: - var s: string s == null - var b: blob b != null *** - var l: list l != null *** - var t: tuple t != null *** - var d: dict d != null *** - var f: func f == null - var j: job j == null - var c: channel c == null - var o: Class o == null - -A variable initialized to empty equals null_; but not null: - var s2: string = "" == null_string != null - var b2: blob = 0z == null_blob != null - var l2: list = [] == null_list != null - var t2: tuple = () == null_tuple != null - var d2: dict = {} == null_dict != null - -NOTE: the specialized variables, like job, default to null value and have no -corresponding empty value. +Elsewhere in the documentation it says, "often a null value is handled the +same as an empty value, but not always". For example, you cannot add to a +null container: >vim9 + + vim9script + var le: list = [] + le->add('Okay') # le is now ['Okay'] + var ln = null_list + ln->add("E1130") # E1130: Cannot add to null list +< +As explained in |null-compare|, there is a non-transitive relationship among +`null`, null_ containers, and `empty`. To recap, for example: >vim9 + + vim9cmd echo (null_dict == {}, null_dict == null, {} != null) +< +The exception is an uninitialized string. It is equal to `null` (and is the +same instance as `null_string`). The 'is' operator (|expr-is|) may be used to +determine whether a string is uninitialized: >vim9 + + vim9script + var s: string + echo s == null_string # true + echo s is null_string # true (the same instance) + echo s == null # true (unexpected, perhaps) + echo s is null # false (not the same instance) +< +However, don't do the same for the other containers because, when evaluated +against their applicable null_ with 'is', they return `false`: >vim9 + + vim9script + var d: dict + echo d == null_dict # true + echo d is null_dict # false (not the same instance) + echo d == null # false (as expected) + echo d is null # false (not the same instance) +< +The key distinction here is an uninitialized string is implemented as +`null_string`, while an uninitialized list, dict, tuple, or blob is +implemented as an empty container ([], {}, (), and 0z respectively). +So, those uninitialized types are equal to, but not the same instance as, +their null_ counterparts, as this example shows: >vim9 + + vim9script + var t: tuple + echo t == null_tuple # true + echo t is null_tuple # false + +However, a variable initialized to the null_ is equal not only to the +null_, it is also equal to null. For example: >vim9 + + vim9script + var t: tuple = null_tuple + echo t == null_tuple # true + echo t is null_tuple # true + echo t == null # true +< +An uninitialized container variable is not equal to null, except for an +uninitialized string, which is explained in an example, above. So, these +all echo `true`: >vim9 + + vim9script + var b: blob | echo b != null + var d: dict | echo d != null + var l: list | echo l != null + var t: tuple | echo t != null + var s: string | echo s == null + +An uninitialized specialized variable is equal to null so these all echo `true`: >vim9 + + vim9script + var c: channel | echo c == null + var F: func | echo F == null + var j: job | echo j == null + class Class + endclass + var nc: Class | echo nc == null + enum Enum + endenum + var ne: Enum | echo ne == null +< + Note: the specialized variables, like job, default to null and + no specialized variable has a corresponding empty value. + +A container variable initialized to empty equals null_, so these are all +`true`: >vim9 + + vim9script + var s: string = "" | echo s == null_string + var b: blob = 0z | echo b == null_blob + var l: list = [] | echo l == null_list + var t: tuple = () | echo t == null_tuple + var d: dict = {} | echo d == null_dict +< +However, a container variable initialized to empty does not equal null, so +these are all `true`: >vim9 + + vim9script + var s: string = "" | echo s != null + var b: blob = 0z | echo b != null + var l: list = [] | echo l != null + var t: tuple = () | echo t != null + var d: dict = {} | echo d != null +< ============================================================================== @@ -1972,13 +2880,13 @@ errors: >vim9 vim9script My1558() - # Vim(eval):E1558: Unknown generic function: My1558 + # E1558: Unknown generic function: My1558 < >vim9 vim9script def My1560(): void enddef My1560() - # Vim(echo):E1560: Not a generic function: My1560 + # E1560: Not a generic function: My1560 < *E1561* Type parameter names must not clash with other identifiers: >vim9 @@ -2170,7 +3078,7 @@ Currently, Vim does not support: ============================================================================== 6. Namespace, Import and Export - *vim9script* *vim9-export* *vim9-import* + *vim9script* *vim9-export* *vim9-import* A Vim9 script can be written to be imported. This means that some items are intentionally exported, made available to other scripts. When the exporting @@ -2496,7 +3404,8 @@ much overhead that cannot be avoided. Therefore the `:def` method to define a new-style function had to be added, which allows for a function with different semantics. Most things still work as before, but some parts do not. A new way to define a function was -considered the best way to separate the legacy style code from Vim9 style code. +considered the best way to separate the legacy style code from Vim9 style +code. Using "def" to define a function comes from Python. Other languages use "function" which clashes with legacy Vim script. diff --git a/runtime/doc/vim9class.txt b/runtime/doc/vim9class.txt index 0991c1b7..6f936a01 100644 --- a/runtime/doc/vim9class.txt +++ b/runtime/doc/vim9class.txt @@ -1,4 +1,4 @@ -*vim9class.txt* For Vim version 9.1. Last change: 2025 Aug 27 +*vim9class.txt* For Vim version 9.2. Last change: 2026 Mar 07 VIM REFERENCE MANUAL by Bram Moolenaar @@ -661,8 +661,8 @@ The basic idea is to build on top of an existing class, add properties to it. The extended class is called the "base class" or "super class". The new class is called the "child class". -Object variables from the base class are all taken over by the child class. It -is not possible to override them (unlike some other languages). +Object variables from the base class are all taken over by the child class. +It is not possible to override them (unlike some other languages). *E1356* *E1357* *E1358* Object methods of the base class can be overruled. The signature (arguments, @@ -766,7 +766,7 @@ The following builtin methods are supported: A class method cannot be used as a builtin method. Defining an interface ~ - *Interface* *:interface* *:endinterface* + *interface* *Interface* *:interface* *:endinterface* An interface is defined between `:interface` and `:endinterface`. It may be prefixed with `:export`: > @@ -1354,7 +1354,6 @@ the restrictions? Thoughts: - Generics for a class: `class ` -- Generics for a function: `def GetLast(key: Tkey)` - Mixins: not sure if that is useful, leave out for simplicity. Some things that look like good additions: diff --git a/runtime/doc/vimdiff-ja.UTF-8.1 b/runtime/doc/vimdiff-ja.UTF-8.1 index b9324ee4..964178b8 100644 --- a/runtime/doc/vimdiff-ja.UTF-8.1 +++ b/runtime/doc/vimdiff-ja.UTF-8.1 @@ -1,4 +1,4 @@ -.TH VIMDIFF 1 "2001 March 30" +.TH VIMDIFF 1 "2021 June 13" .SH 名前 vimdiff \- 2 個から 8 個のファイルを Vim で開いて、その差分を表示する .SH 書式 diff --git a/runtime/doc/vimdiff-sv.1 b/runtime/doc/vimdiff-sv.1 new file mode 100644 index 00000000..157fbc9e --- /dev/null +++ b/runtime/doc/vimdiff-sv.1 @@ -0,0 +1,48 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH VIMDIFF 1 "13 juni 2021" +.SH NAMN +vimdiff \- redigera mellan tv och tta versioner av en fil med Vim och visa +skillnader +.SH SYNOPSIS +.br +\fBvimdiff\fP [flaggor] fil1 fil2 [fil3 [fil4 [fil5 [fil6 [fil7 [fil8]]]]]] +.PP +\fBgvimdiff\fP +.SH BESKRIVNING +\fBVimdiff\fP startar \fBVim\fP p tv till tta filer. Varje fil fr sitt eget +fnster. Skillnaderna mellan filerna markeras. Detta r ett bra stt att +granska ndringar och flytta ndringar frn en version till en annan version +av samma fil. +.PP +Se vim(1) fr mer information om Vim. +.PP +Nr du startar som \fBgvimdiff\fP, startas grafiska grnssnittet om det r +tillgngligt. +.PP +I varje fnster kommer flaggan "diff" att vara aktiverad, vilket gr att +skillnaderna markeras. +.br +Flaggorna "wrap" och "scrollbind" r instllda fr att texten ska se bra ut. +.br +Flaggan "foldmethod" r instllt p "diff", vilket innebr att rader utan +ndringar placeras i en vikning. "foldcolumn" r instllt p tv fr att +gra det enkelt att hitta vikningarna och ppna eller stnga dem. +.SH FLAGGOR +Vertikala delningar anvnds fr att justera raderna, som om argumentet "\-O" +hade anvnts. Fr att istllet anvnda horisontella delningar, anvnd +argumentet "\-o". +.PP +Fr alla andra argument, se vim(1). +.SH "SE VEN" +vim(1) +.SH UPPHOVSPERSON +Det mesta av \fBVim\fP har skapats av Bram Moolenaar, med stor hjlp frn +andra. Se ":help credits" i \fBVim.\fP +.SH SVENSK VERSTTNING +Vim versattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt sjlva Vim. +Om du hittar fel i versttningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/vimdiff-sv.UTF-8.1 b/runtime/doc/vimdiff-sv.UTF-8.1 new file mode 100644 index 00000000..24fb5190 --- /dev/null +++ b/runtime/doc/vimdiff-sv.UTF-8.1 @@ -0,0 +1,48 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH VIMDIFF 1 "13 juni 2021" +.SH NAMN +vimdiff \- redigera mellan två och åtta versioner av en fil med Vim och visa +skillnader +.SH SYNOPSIS +.br +\fBvimdiff\fP [flaggor] fil1 fil2 [fil3 [fil4 [fil5 [fil6 [fil7 [fil8]]]]]] +.PP +\fBgvimdiff\fP +.SH BESKRIVNING +\fBVimdiff\fP startar \fBVim\fP på två till åtta filer. Varje fil får sitt eget +fönster. Skillnaderna mellan filerna markeras. Detta är ett bra sätt att +granska ändringar och flytta ändringar från en version till en annan version +av samma fil. +.PP +Se vim(1) för mer information om Vim. +.PP +När du startar som \fBgvimdiff\fP, startas grafiska gränssnittet om det är +tillgängligt. +.PP +I varje fönster kommer flaggan "diff" att vara aktiverad, vilket gör att +skillnaderna markeras. +.br +Flaggorna "wrap" och "scrollbind" är inställda för att texten ska se bra ut. +.br +Flaggan "foldmethod" är inställt på "diff", vilket innebär att rader utan +ändringar placeras i en vikning. "foldcolumn" är inställt på två för att +göra det enkelt att hitta vikningarna och öppna eller stänga dem. +.SH FLAGGOR +Vertikala delningar används för att justera raderna, som om argumentet "\-O" +hade använts. För att istället använda horisontella delningar, använd +argumentet "\-o". +.PP +För alla andra argument, se vim(1). +.SH "SE ÄVEN" +vim(1) +.SH UPPHOVSPERSON +Det mesta av \fBVim\fP har skapats av Bram Moolenaar, med stor hjälp från +andra. Se ":help credits" i \fBVim.\fP +.SH SVENSK ÖVERSÄTTNING +Vim översattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt själva Vim. +Om du hittar fel i översättningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/vimtutor-ja.UTF-8.1 b/runtime/doc/vimtutor-ja.UTF-8.1 index 2e4f69dc..f7f38b2c 100644 --- a/runtime/doc/vimtutor-ja.UTF-8.1 +++ b/runtime/doc/vimtutor-ja.UTF-8.1 @@ -1,44 +1,99 @@ -.TH VIMTUTOR 1 "2001 April 2" +.TH VIMTUTOR 1 "2024 December 03" .SH 名前 vimtutor \- Vim チュートリアル .SH 書式 .br -.B vimtutor [\-g] [language] +.B vimtutor [\-l | \-\-language ISO639] [\-c | \-\-chapter NUMBER] [\-g | \-\-gui] [ISO639] +.br +.B vimtutor [\-h | \-\-help] +.br +.B vimtutor [\-\-list] .SH 説明 .B Vim のチュートリアルを起動します。 -演習ファイルのコピーを使って実施するので、オリジナルの演習ファイルを壊してしまう心配はありません。 .PP .B Vim を初めて学ぶ人向けのチュートリアルです。 +省略可能な [ISO639] 引数は "ja" や "es" のような 2 または 3 文字の言語名です。 .PP -引数に \-g を指定すると GUI 版の vim が利用可能であれば vim ではなく gvim -を使って vimtutor が開始します。gvim が見つからないときは Vim が使用されます。 -.PP -[language] 引数は "ja" や "es" などの二文字の言語名です。 -[language] 引数を省略した場合はロケールの言語が使われます。 -翻訳された演習ファイルがある場合は、そのファイルが使われます。 -ない場合は英語のファイルが使われます。 +.B vimtutor +は演習ファイルの一時的なコピーを開くので、オリジナルの演習ファイルを上書きしてしまう心配はありません。 .PP .B Vim -は Vi 互換モードで起動されます。 +は常に +.B Vi +非互換モードで起動されます。 +.SH オプション +.TP +.BR \-l ", " \-\-language\ \fIISO639\fR +2 または 3 文字の言語コードを設定します。 +例: 'ja', 'es', 'bar' +ロケールの言語が使用可能であればそれが使われ、なければ英語がデフォルトとして使われます。 +.TP +.BR \-c ", " \-\-chapter\ \fINUMBER\fR +章番号を設定します。 +デフォルトは第 1 章です。 +.TP +.BR \-g ", " \-\-gui +使用可能であれば +.B vimtutor +を GUI 版の vim を使って開始します。そうでなければコンソール版の vim を使用します。 +.TP +.BR \-h ", " \-\-help +使い方を表示します。 +.TP +.BR \-\-list +章と言語の一覧を表示します。 +.SH 例 +.B vimtutor +をドイツ語の第 1 章で開始するには: +.PP +.nf +.RS +vimtutor de +.RE +.fi +.PP +英語の第 2 章の場合は: +.PP +.nf +.RS +vimtutor -c2 +.RE +.fi +.PP +GUI でバイエルン語の第 1 章を開始する際の長い形式のコマンドは: +.PP +.nf +.RS +vimtutor --language bar --chapter 1 --gui +.RE +.fi .SH ファイル .TP 15 -/usr/local/lib/vim/tutor/tutor[.language] +/usr/local/share/vim/vim??/tutor/tutor1[.language] .B Vimtutor -の演習ファイル。 +の第 1 章の演習ファイル。 .TP 15 -/usr/local/lib/vim/tutor/tutor.vim -演習ファイルをコピーするための Vim スクリプト。 -.SH 著者 +/usr/local/share/vim/vim??/tutor/tutor2[.language] +.B Vimtutor +の第 2 章の演習ファイル。 +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor.vim .B Vimtutor -は、Colorado State University の Charles Smith のアイデアを基に、 +の演習ファイルをコピーするための +.B Vim +スクリプト。 +.SH 著者 +.B The Vi Tutorial +は、元々 Colorado State University の Charles Smith のアイデアを基に、 Colorado School of Mines の Michael C. Pierce と Robert K. Ware -の両名によって Vi 向けに作成されたものを基にしています。 -E-mail: bware@mines.colorado.edu (現在は無効). -.br +の両名によって Vi 向けに作成されました。 +.B E-mail: bware@mines.colorado.edu (現在は無効). +.PP .B Vim に合わせて Bram Moolenaar が変更を加えました。 +.PP 翻訳者の名前は演習ファイルを参照してください。 .SH 関連項目 vim(1) diff --git a/runtime/doc/vimtutor-sv.1 b/runtime/doc/vimtutor-sv.1 new file mode 100644 index 00000000..27fccdbc --- /dev/null +++ b/runtime/doc/vimtutor-sv.1 @@ -0,0 +1,93 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH VIMTUTOR 1 "3 december 2024" +.SH NAMN +vimtutor Vim\-handledaren +.SH SYNOPSIS +.br +\fBvimtutor [\-l | \-\-language ISO639] [\-c | \-\-chapter NUMMER] [\-g | \-\-gui] [ISO639]\fP +.br +\fBvimtutor [\-h | \-\-help]\fP +.br +\fBvimtutor [\-\-list]\fP +.SH BESKRIVNING +\fBVimtutor\fP startar \fBVim\fP \-handledaren. +.PP +\fBVimtutor\fP r anvndbart fr personer som vill lra sig sina frsta \fBVim\fP +\-kommandon. Det valfria argumentet [ISO639] r namnet p ett sprk +bestende av tv eller tre bokstver, till exempel "sv" eller "es". +.PP +\fBVimtutor\fP ppnar endast tillflliga kopior av de ursprungliga +handledningsfilerna, s det finns ingen risk att lektionerna skrivs ver. +.PP +\fBVim\fP startas alltid i \fBVi\fP nocompatible\-lge. +.SH FLAGGOR +.TP +\fB\-l\fP, \fB\-\-language\ \fP\fIISO639\fP +Ange sprkkoden med tv eller tre bokstver. T.ex. 'sv', 'es', 'bar'. +Standardinstllningen r sprket fr den lokala instllningen om det finns +tillgngligt, annars engelska. +.TP +\fB\-c\fP, \fB\-\-chapter\ \fP\fINUMMER\fP +Stll in kapitelnummer. Standardinstllningen r kapitel ett. +.TP +\fB\-g\fP, \fB\-\-gui\fP +Starta \fBvimtutor\fP i grafiska grnssnittsversionen av vim om den r +tillgnglig, annars faller du tillbaka till konsolversionen av vim. +.TP +\fB\-h\fP, \fB\-\-help\fP +Visa anvndningsinformation. +.TP +\fB\-\-list\fP +Visa kapitel och sprk. +.SH EXEMPEL +Fr att starta \fBvimtutor\fP p tyska p kapitel ett: +.PP +.nf +.RS +vimtutor de +.RE +.fi +.PP +P engelska i kapitel tv: +.PP +.nf +.RS +vimtutor \-c2 +.RE +.fi +.PP +Lngt kommando fr bayerska i grafiska grnssnittet i kapitel ett: +.PP +.nf +.RS +vimtutor \-\-language bar \-\-chapter 1 \-\-gui +.RE +.fi +.SH FILER +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor1[.sprk] +\fBVimtutor\fP, kapitel ett, textfil(er). +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor2[.sprk] +\fBVimtutor\fP, kapitel tv, textfil(er). +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor.vim +\fBVim\fP \-skriptet som anvnds fr att kopiera \fBVimtutor\fP \-textfilen. +.SH UPPHOVSPERSON +\fBThe Vi Tutorial\fP skrevs ursprungligen fr Vi av Michael C. Pierce och +Robert K. Ware, Colorado School of Mines, med ider frn Charles Smith, +Colorado State University. \fBE\-mail: bware@mines.colorado.edu (fungerar inte lngre).\fP +.PP +Modifierad fr \fBVim\fP, av Bram Moolenaar. +.PP +versttningsbidragare listas i handledningsfilerna. +.SH "SE VEN" +vim(1) +.SH SVENSK VERSTTNING +Vim versattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt sjlva Vim. +Om du hittar fel i versttningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/vimtutor-sv.UTF-8.1 b/runtime/doc/vimtutor-sv.UTF-8.1 new file mode 100644 index 00000000..24177c7b --- /dev/null +++ b/runtime/doc/vimtutor-sv.UTF-8.1 @@ -0,0 +1,93 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH VIMTUTOR 1 "3 december 2024" +.SH NAMN +vimtutor Vim\-handledaren +.SH SYNOPSIS +.br +\fBvimtutor [\-l | \-\-language ISO639] [\-c | \-\-chapter NUMMER] [\-g | \-\-gui] [ISO639]\fP +.br +\fBvimtutor [\-h | \-\-help]\fP +.br +\fBvimtutor [\-\-list]\fP +.SH BESKRIVNING +\fBVimtutor\fP startar \fBVim\fP \-handledaren. +.PP +\fBVimtutor\fP är användbart för personer som vill lära sig sina första \fBVim\fP +\-kommandon. Det valfria argumentet [ISO639] är namnet på ett språk +bestående av två eller tre bokstäver, till exempel "sv" eller "es". +.PP +\fBVimtutor\fP öppnar endast tillfälliga kopior av de ursprungliga +handledningsfilerna, så det finns ingen risk att lektionerna skrivs över. +.PP +\fBVim\fP startas alltid i \fBVi\fP nocompatible\-läge. +.SH FLAGGOR +.TP +\fB\-l\fP, \fB\-\-language\ \fP\fIISO639\fP +Ange språkkoden med två eller tre bokstäver. T.ex. 'sv', 'es', 'bar'. +Standardinställningen är språket för den lokala inställningen om det finns +tillgängligt, annars engelska. +.TP +\fB\-c\fP, \fB\-\-chapter\ \fP\fINUMMER\fP +Ställ in kapitelnummer. Standardinställningen är kapitel ett. +.TP +\fB\-g\fP, \fB\-\-gui\fP +Starta \fBvimtutor\fP i grafiska gränssnittsversionen av vim om den är +tillgänglig, annars faller du tillbaka till konsolversionen av vim. +.TP +\fB\-h\fP, \fB\-\-help\fP +Visa användningsinformation. +.TP +\fB\-\-list\fP +Visa kapitel och språk. +.SH EXEMPEL +För att starta \fBvimtutor\fP på tyska på kapitel ett: +.PP +.nf +.RS +vimtutor de +.RE +.fi +.PP +På engelska i kapitel två: +.PP +.nf +.RS +vimtutor \-c2 +.RE +.fi +.PP +Långt kommando för bayerska i grafiska gränssnittet i kapitel ett: +.PP +.nf +.RS +vimtutor \-\-language bar \-\-chapter 1 \-\-gui +.RE +.fi +.SH FILER +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor1[.språk] +\fBVimtutor\fP, kapitel ett, textfil(er). +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor2[.språk] +\fBVimtutor\fP, kapitel två, textfil(er). +.TP 15 +/usr/local/share/vim/vim??/tutor/tutor.vim +\fBVim\fP \-skriptet som används för att kopiera \fBVimtutor\fP \-textfilen. +.SH UPPHOVSPERSON +\fBThe Vi Tutorial\fP skrevs ursprungligen för Vi av Michael C. Pierce och +Robert K. Ware, Colorado School of Mines, med idéer från Charles Smith, +Colorado State University. \fBE\-mail: bware@mines.colorado.edu (fungerar inte längre).\fP +.PP +Modifierad för \fBVim\fP, av Bram Moolenaar. +.PP +Översättningsbidragare listas i handledningsfilerna. +.SH "SE ÄVEN" +vim(1) +.SH SVENSK ÖVERSÄTTNING +Vim översattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt själva Vim. +Om du hittar fel i översättningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/visual.txt b/runtime/doc/visual.txt index e65d1fe5..67f32c4d 100644 --- a/runtime/doc/visual.txt +++ b/runtime/doc/visual.txt @@ -1,7 +1,7 @@ -*visual.txt* For Vim version 9.1. Last change: 2025 Oct 12 +*visual.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Visual mode *Visual* *Visual-mode* *visual-mode* diff --git a/runtime/doc/wayland.txt b/runtime/doc/wayland.txt index 300b9c5b..8d352bde 100644 --- a/runtime/doc/wayland.txt +++ b/runtime/doc/wayland.txt @@ -1,7 +1,7 @@ -*wayland.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*wayland.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Wayland Protocol Support *wayland* @@ -16,7 +16,8 @@ Wayland Protocol Support *wayland* Functionality such as the clipboard for Wayland requires a seat to use. A Wayland seat can consist of a keyboard, pointer, and touch device(s). The seat to use can be set with the 'wlseat' option. Only useful if you use -multiple Wayland seats in the same Wayland session. +multiple Wayland seats in the same Wayland session. If you don't know what +this is means, then it likely does not matter for you. *wayland-gui* See |gui-wayland|. Please note that when using the GUI, Vim uses the toolkit @@ -63,17 +64,24 @@ should be bundled with libwayland on your system: > If you don't get any match, then please see |wayland-focus-steal| for more information. +Some compositors that are known to support either or both protocols: + 1. KWin (KDE) + 2. wlroots based (Sway, Labwc) + 3. Niri + 4. Hyprland + 5. Wayfire + If you come from X11, then the regular Wayland selection is equivalent to the CLIPBOARD selection in X11, and the primary Wayland selection equates to the -X11 primary selection. Accessing these selections is the same as X11 in Vim, +X11 PRIMARY selection. Accessing these selections is the same as X11 in Vim, in which the + register is the regular selection, and the * register is the -primary selection, note that your compositor may not support primary +primary selection. Note that your compositor may not support primary selections, see |wayland-primary-selection| for more details. *wayland-persist* If you use X11 cut buffers, no such things exist on Wayland. Instead to emulate such functionality, a separate clipboard manager must be used in order -to persist selection data when a Wayland client exists. +to persist selection data when a Wayland client exits. *wayland-and-x11* If your version of Vim comes compiled with both X11 and Wayland support, then diff --git a/runtime/doc/windows.txt b/runtime/doc/windows.txt index 8dbc7f3f..f27cc6b0 100644 --- a/runtime/doc/windows.txt +++ b/runtime/doc/windows.txt @@ -1,7 +1,7 @@ -*windows.txt* For Vim version 9.1. Last change: 2025 Oct 26 +*windows.txt* For Vim version 9.2. Last change: 2026 Mar 01 - VIM REFERENCE MANUAL by Bram Moolenaar + VIM REFERENCE MANUAL by Bram Moolenaar Editing with multiple windows and buffers. *windows* *buffers* @@ -122,9 +122,9 @@ when the last window also has a status line: 'laststatus' = 1 status line if there is more than one window 'laststatus' = 2 always a status line -You can change the contents of the status line with the 'statusline' option. -This option can be local to the window, so that you can have a different -status line in each window. +You can change the contents and height of the status line with the +'statusline' and 'statuslineopt' options. Both can be local to the window, +allowing each window to have a unique status line appearance and height. Normally, inversion is used to display the status line. This can be changed with the 's' character in the 'highlight' option. For example, "sb" sets it @@ -205,9 +205,9 @@ CTRL-W CTRL-N *CTRL-W_CTRL-N* :[N]new [++opt] [+cmd] *:new* Create a new window and start editing an empty file in it. Make new window N high (default is to use half the existing - height). Reduces the current window height to create room (and - others, if the 'equalalways' option is set and 'eadirection' - isn't "hor"). + height). Reduces the current window height to create room + (and others, if the 'equalalways' option is set and + 'eadirection' isn't "hor"). Also see |++opt| and |+cmd|. If 'fileformats' is not empty, the first format given will be used for the new buffer. If 'fileformats' is empty, the @@ -511,8 +511,8 @@ CTRL-W R Rotate windows upwards/leftwards. The second window becomes current window is in. CTRL-W x *CTRL-W_x* *CTRL-W_CTRL-X* -CTRL-W CTRL-X Without count: Exchange current window with next one. If there - is no next window, exchange with previous window. +CTRL-W CTRL-X Without count: Exchange current window with next one. If + there is no next window, exchange with previous window. With count: Exchange current window with Nth window (first window is 1). The cursor is put in the other window. When vertical and horizontal window splits are mixed, the @@ -659,11 +659,11 @@ times than |WinResized|, it may slow down editing a bit. The information provided by |WinScrolled| is a dictionary for each window that has changes, using the window ID as the key, and a total count of the changes -with the key "all". Example value for |v:event| (|Vim9| syntax): +with the key "all". Example value for |v:event| (|Vim9| syntax): > { - all: {width: 0, height: 2, leftcol: 0, skipcol: 0, topline: 1, topfill: 0}, + all: {width: 0, height: 2, leftcol: 0, skipcol: 0, topline: 1, topfill: 0}, 1003: {width: 0, height: -1, leftcol: 0, skipcol: 0, topline: 0, topfill: 0}, - 1006: {width: 0, height: 1, leftcol: 0, skipcol: 0, topline: 1, topfill: 0}, + 1006: {width: 0, height: 1, leftcol: 0, skipcol: 0, topline: 1, topfill: 0}, } Note that the "all" entry has the absolute values of the individual windows @@ -878,13 +878,15 @@ the buffer. The result is that all buffers will use the 'encoding' encoding *:sta* *:stag* :sta[g][!] [tagname] Does ":tag[!] [tagname]" and splits the window for the found - tag. See also |:tag|. + tag. Refer to 'switchbuf' to jump to a tag in a vertically + split window or a new tab page. See also |:tag|. CTRL-W ] *CTRL-W_]* *CTRL-W_CTRL-]* CTRL-W CTRL-] Split current window in two. Use identifier under cursor as a tag and jump to it in the new upper window. In Visual mode uses the Visually selected text as a tag. - Make new window N high. + Make new window N high. Refer to 'switchbuf' to jump to a tag + in a vertically split window or a new tab page. *CTRL-W_g]* CTRL-W g ] Split current window in two. Use identifier under cursor as a @@ -952,11 +954,20 @@ windows. Alternatively, a popup window can be used by setting the 'previewpopup' option. When set, it overrules the 'previewwindow' and 'previewheight' settings. The option is a comma-separated list of values: + border border style (see 'pumborder') + borderhighlight highlight group for the popup border characters + close show close button: "on" (default) or "off", and if + the value is "on", it must be set after border. height maximum height of the popup - width maximum width of the popup highlight highlight group of the popup (default is Pmenu) + resize show resize handle: "on" (default) or "off" + shadow "off" (default) or "on" using |hl-PmenuShadow| + width maximum width of the popup + Example: > :set previewpopup=height:10,width:60 + :set previewpopup=border:single,borderhilight:PmenuBorder + :set previewpopup=border:custom:─;│;─;│;┌;┐;┘;└ A few peculiarities: - If the file is in a buffer already, it will be re-used. This will allow for @@ -996,13 +1007,13 @@ CTRL-W CTRL-Z *CTRL-W_CTRL-Z* *:pc* *:pclose* CTRL-W } *CTRL-W_}* Use identifier under cursor as a tag and perform a :ptag on - it. Make the new Preview window (if required) N high. If N is - not given, 'previewheight' is used. + it. Make the new Preview window (if required) N high. If N + is not given, 'previewheight' is used. CTRL-W g } *CTRL-W_g}* Use identifier under cursor as a tag and perform a :ptjump on - it. Make the new Preview window (if required) N high. If N is - not given, 'previewheight' is used. + it. Make the new Preview window (if required) N high. If N + is not given, 'previewheight' is used. *:pb* *:pbuffer* :[N]pb[uffer][!] [+cmd] [N] @@ -1145,10 +1156,10 @@ list of buffers. |unlisted-buffer| or "N CTRL-^", where N is the buffer number. For the file name these special values are used: - [Prompt] |prompt-buffer| - [Popup] buffer of a |popup-window| - [Scratch] 'buftype' is "nofile" - [No Name] no file name specified + "[Prompt]" |prompt-buffer| + "[Popup]" buffer of a |popup-window| + "[Scratch]" 'buftype' is "nofile" + "[No Name]" no file name specified For a |terminal-window| buffer the status is used. Indicators (chars in the same column are mutually exclusive): @@ -1208,15 +1219,22 @@ list of buffers. |unlisted-buffer| :bd[elete][!] [N] Unload buffer [N] (default: current buffer) and delete it from the buffer list. If the buffer was changed, this fails, - unless when [!] is specified, in which case changes are lost. + unless [!] is specified, in which case changes are lost. The file remains unaffected. Any windows for this buffer are closed. If buffer [N] is the current buffer, another buffer will be displayed instead. This is the most recent entry in the jump list that points into a loaded buffer. + Actually, the buffer isn't completely deleted, it is removed from the buffer list |unlisted-buffer| and option values, variables and mappings/abbreviations for the buffer are - cleared. Examples: > + cleared. If [N] is the last listed buffer in a window (i.e., + there is no other listed buffer to switch to), the buffer is + emptied instead of being unloaded. The window is not closed, + and the buffer may be reused as a new buffer |buffer-reuse|. + This ensures every window always has a valid buffer. + + Examples: > :.,$-bdelete " delete buffers from the current one to " last but one :%bdelete " delete all buffers @@ -1325,8 +1343,8 @@ list of buffers. |unlisted-buffer| buffer (if there is one). Similarly, if you are in a normal (non-help) buffer, this takes you to the next normal buffer. This is so that if you have invoked help, it doesn't get in - the way when you're browsing code/text buffers. The next three - commands also work like this. + the way when you're browsing code/text buffers. The next + three commands also work like this. *:sbn* *:sbnext* :[N]sbn[ext] [+cmd] [N] diff --git a/runtime/doc/workshop.txt b/runtime/doc/workshop.txt index 9ec30da9..c4b4c55b 100644 --- a/runtime/doc/workshop.txt +++ b/runtime/doc/workshop.txt @@ -1,7 +1,7 @@ -*workshop.txt* For Vim version 9.1. Last change: 2019 Jan 17 +*workshop.txt* For Vim version 9.2. Last change: 2026 Feb 14 - VIM REFERENCE MANUAL by Gordon Prieur + VIM REFERENCE MANUAL by Gordon Prieur Sun Visual WorkShop Features *workshop* *workshop-support* diff --git a/runtime/doc/xxd-it.1 b/runtime/doc/xxd-it.1 index 1500b7f8..4caa45ae 100644 --- a/runtime/doc/xxd-it.1 +++ b/runtime/doc/xxd-it.1 @@ -1,4 +1,4 @@ -.TH XXD 1 "Maggio 2024" "Pagina di manuale per xxd" +.TH XXD 1 "Marzo 2026" "Pagina di manuale per xxd" .\" .\" 21 Maggio 1996 .\" Autore della pagina di manuale: @@ -170,11 +170,14 @@ byte assoluti (o relativi) di distanza all'interno di input_file. (o se in combinazione con \fI+ \fR: prima della posizione corrente nel file `standard input'). Se non si specifica l'opzione \-s, xxd inizia dalla posizione corrente all'interno del file. .TP +.I \-t +Quando l'output nello stile delle `include' di C (opzione \-i ) aggiungere uno zero binario a fine stringa. +.TP .I \-u -Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole. +Usare lettere esadecimali maiuscole. Per default si usano lettere minuscole. .TP .IR \-v " | " \-version -Visualizza la stringa contenente la versione del programma. +Visualizzare la stringa contenente la versione del programma. .SH ATTENZIONE .PP .I xxd \-r @@ -182,7 +185,8 @@ Visualizza la stringa contenente la versione del programma. Se possibili posizionarsi tramite `seek' sul file di output, il numero di riga di ogni riga esadecimale pu essere non ordinato, delle righe possono mancare, o sovrapporsi. In tal caso xxd user lseek(2) per posizionarsi all'interno del file. -Se per il file di output non si pu usare `seek', sono permessi solo dei "buchi", che saranno riempiti con zeri binari. +Se per il file di output non si pu usare `seek', sono permessi solo dei "buchi", +che saranno riempiti con zeri binari. .PP .I xxd \-r non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati. @@ -366,6 +370,20 @@ Leggere singoli caratteri da una linea seriale .br \fI% echo \-n foo > /dev/term/b\fR .PP +Output nello stile delle `include' di C (opzione \-i ) con uno zero binario a fine stringa +.br +\fI% echo -n 0123456789 > cifre\fR +.br +\fI% xxd -i -t cifre\fR +.br +unsigned char cifre[] = { +.br + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00 +.br +}; +.br +unsigned int cifre_len = 10; +.PP .SH CODICI DI RITORNO Il programma pu restituire questi codici di errore: .TP diff --git a/runtime/doc/xxd-it.UTF-8.1 b/runtime/doc/xxd-it.UTF-8.1 index 93dbf561..b35409f7 100644 --- a/runtime/doc/xxd-it.UTF-8.1 +++ b/runtime/doc/xxd-it.UTF-8.1 @@ -1,4 +1,4 @@ -.TH XXD 1 "Maggio 2024" "Pagina di manuale per xxd" +.TH XXD 1 "Marzo 2026" "Pagina di manuale per xxd" .\" .\" 21 Maggio 1996 .\" Autore della pagina di manuale: @@ -170,11 +170,14 @@ byte assoluti (o relativi) di distanza all'interno di input_file. (o se in combinazione con \fI+ \fR: prima della posizione corrente nel file `standard input'). Se non si specifica l'opzione \-s, xxd inizia dalla posizione corrente all'interno del file. .TP +.I \-t +Quando l'output è nello stile delle `include' di C (opzione \-i ) aggiungere uno zero binario a fine stringa. +.TP .I \-u -Usa lettere esadecimali maiuscole. Per default si usano lettere minuscole. +Usare lettere esadecimali maiuscole. Per default si usano lettere minuscole. .TP .IR \-v " | " \-version -Visualizza la stringa contenente la versione del programma. +Visualizzare la stringa contenente la versione del programma. .SH ATTENZIONE .PP .I xxd \-r @@ -182,7 +185,8 @@ Visualizza la stringa contenente la versione del programma. Se è possibili posizionarsi tramite `seek' sul file di output, il numero di riga di ogni riga esadecimale può essere non ordinato, delle righe possono mancare, o sovrapporsi. In tal caso xxd userà lseek(2) per posizionarsi all'interno del file. -Se per il file di output non si può usare `seek', sono permessi solo dei "buchi", che saranno riempiti con zeri binari. +Se per il file di output non si può usare `seek', sono permessi solo dei "buchi", +che saranno riempiti con zeri binari. .PP .I xxd \-r non genera mai errori per parametri errati. I parametri extra sono silenziosamente ignorati. @@ -366,6 +370,20 @@ Leggere singoli caratteri da una linea seriale .br \fI% echo \-n foo > /dev/term/b\fR .PP +Output nello stile delle `include' di C (opzione \-i ) con uno zero binario a fine stringa +.br +\fI% echo -n 0123456789 > cifre\fR +.br +\fI% xxd -i -t cifre\fR +.br +unsigned char cifre[] = { +.br + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00 +.br +}; +.br +unsigned int cifre_len = 10; +.PP .SH CODICI DI RITORNO Il programma può restituire questi codici di errore: .TP diff --git a/runtime/doc/xxd-ja.UTF-8.1 b/runtime/doc/xxd-ja.UTF-8.1 index 93928fe5..f05f7d7b 100644 --- a/runtime/doc/xxd-ja.UTF-8.1 +++ b/runtime/doc/xxd-ja.UTF-8.1 @@ -1,4 +1,4 @@ -.TH XXD 1 "August 1996" "Manual page for xxd" +.TH XXD 1 "May 2024" "Manual page for xxd" .\" .\" 21st May 1996 .\" Man page author: @@ -58,7 +58,8 @@ 1 オクテットが "1" と "0" の 8 文字で出力されます。 各行の行頭には 16 進数の行番号が表示されます。 行末には ASCII (または EBCDIC) で表した場合の文字が表示されます。 -このモードでは \-p、\-i は機能しません。 +このモードでは \-p は機能しません。 +\-i と組み合わせることができます。 .TP .IR \-e リトルエンディアンの 16 進ダンプに切り替える。 @@ -106,6 +107,7 @@ C インクルードファイル形式で出力する。 入力ファイルの名前が付けられた静的配列の定義が出力されます。 標準入力の場合は定義の中身だけ出力されます。 +\-b と組み合わせることができます。 .TP .IR "\-l len " | " \-len len" .RI < len > @@ -228,22 +230,24 @@ xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダ .br \fI% xxd \-s \-0x30 file\fR .PP +注意: 以下の例の結果は 2024 年 5 月時点の xxd.1 マニュアルページに基づいています。 +.PP .br 120 バイトを、平文 16 進ダンプ形式で一行に 20 オクテットずつ出力する。 .br \fI% xxd \-l 120 \-ps \-c 20 xxd.1\fR .br -2e54482058584420312022417567757374203139 +2e544820585844203120224d6179203230323422 .br -39362220224d616e75616c207061676520666f72 +20224d616e75616c207061676520666f72207878 .br -20787864220a2e5c220a2e5c222032317374204d +64220a2e5c220a2e5c222032317374204d617920 .br -617920313939360a2e5c22204d616e2070616765 +313939360a2e5c22204d616e2070616765206175 .br -20617574686f723a0a2e5c2220202020546f6e79 +74686f723a0a2e5c2220202020546f6e79204e75 .br -204e7567656e74203c746f6e79407363746e7567 +67656e74203c746f6e79407363746e7567656e2e .br .br @@ -251,32 +255,32 @@ xxd \-r \-p でプレーン形式 (ポストスクリプト形式) の 16 進ダ .br \fI% xxd \-l 120 \-c 12 xxd.1\fR .br -0000000: 2e54 4820 5858 4420 3120 2241 .TH XXD 1 "A +00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M .br -000000c: 7567 7573 7420 3139 3936 2220 ugust 1996" +0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma .br -0000018: 224d 616e 7561 6c20 7061 6765 "Manual page +00000018: 6e75 616c 2070 6167 6520 666f nual page fo .br -0000024: 2066 6f72 2078 7864 220a 2e5c for xxd"..\\ +00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\\".. .br -0000030: 220a 2e5c 2220 3231 7374 204d "..\\" 21st M +00000030: 5c22 2032 3173 7420 4d61 7920 \\" 21st May .br -000003c: 6179 2031 3939 360a 2e5c 2220 ay 1996..\\" +0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\\" Man .br -0000048: 4d61 6e20 7061 6765 2061 7574 Man page aut +00000048: 2070 6167 6520 6175 7468 6f72 page author .br -0000054: 686f 723a 0a2e 5c22 2020 2020 hor:..\\" +00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\\" Ton .br -0000060: 546f 6e79 204e 7567 656e 7420 Tony Nugent +00000060: 7920 4e75 6765 6e74 203c 746f y Nugent +.\" Changes by Bram Moolenaar +.SH NAMN +\fIxxd\fP \- gr en hexdump eller gr det omvnda. +.SH SYNOPSIS +\fBxxd\fP \-h[elp] +.br +\fBxxd\fP [flaggor] [infil [utfil]] +.br +\fBxxd\fP \-r[evert] [flaggor] [infil [utfil]] +.SH BESKRIVNING +\fIxxd\fP skapar en hexdump av en given fil eller standardinmatning. Det kan +ocks konvertera en hexdump tillbaka till sin ursprungliga binra form. +Liksom \fBuuencode\fP(1) och \fBuudecode\fP(1) tillter det verfring av binr +data i en "mail\-safe" ASCII\-representation, men har frdelen att avkoda till +standardutmatning. Dessutom kan det anvndas fr att utfra binr +filpatchning. +.SH FLAGGOR +Om ingen \fIinfile\fP anges, lses standardinmatningen. Om \fIinfile\fP anges som +ett \`\fB\-\fP'\-tecken, hmtas inmatningen frn standardinmatningen. Om ingen +\fIoutfile\fP anges (eller om ett \`\fB\-\fP'\-tecken finns p dess plats), skickas +resultaten till standardutmatningen. +.PP +Observera att en "lat" parser anvnds som inte kontrollerar mer n den +frsta optionsbokstaven, svida inte optionen fljs av en parameter. +Mellanslag mellan en enskild optionsbokstav och dess parameter r valfria. +Parametrar till optioner kan anges i decimal\-, hexadecimal\- eller +oktalnotation. Sledes r \fB\-c8\fP, \fB\-c 8\fP, \fB\-c 010\fP och \fB\-cols 8\fP alla +likvrdiga. +.PP +.TP +\fI\-a\fP | \fI\-autoskip\fP +Vxla autoskip: En enda '*' erstter NUL\-rader. Standardinstllning r av. +.TP +\fI\-b\fP | \fI\-bits\fP +Vxla till bitdump (binra siffror) istllet fr hexdump. Den hr flaggan +skriver oktetter som tta siffror "1" och "0" istllet fr en vanlig +hexadecimal dump. Varje rad fregs av ett radnummer i hexadecimal och fljs +av en ASCII\- (eller EBCDIC\-) representation. Kommandoradsvxeln \-p fungerar +inte i det hr lget. Kan kombineras med \-i. +.TP +\fI\-c cols \fP|\fI \-cols kolumner\fP +Format <\fIcols\fP> oktetter per rad. Standard 16 (\-i: 12, \-ps: 30, \-b: +6). Max 256. Inget maximum fr \-ps. Med \-ps resulterar 0 i en lng rad med +utdata. +.TP +\fI\-C\fP | \fI\-capitalize\fP +Anvnd versaler fr variabelnamn i C\-inkluderingsfilformat nr du anvnder +\-i. +.TP +\fI\-d\fP +visa offset i decimal istllet fr hex. +.TP +\fI\-E\fP | \fI\-EBCDIC\fP +ndra teckenkodningen i den hgra kolumnen frn ASCII till EBCDIC. Detta +ndrar inte den hexadecimala representationen. Flaggan r meningsls i +kombination med \-r, \-p eller \-i. +.TP +\fI\-e\fP +Byt till little\-endian hex dump. Denna flagga behandlar byte\-grupper som +ord i little\-endian byte\-ordning. Standardgrupperingen p 4 byte kan ndras +med \fI\-g\fP. Denna flagga gller endast hex dump, ASCII\- (eller EBCDIC\-) +representationen frblir ofrndrad. Kommandoradsvxlarna \-r, \-p, \-i +fungerar inte i detta lge. +.TP +\fI\-g bytes \fP|\fI \-groupsize byte\fP +Separera utdata fr varje <\fIbytes\fP> \-byte (tv hexadecimala tecken +eller tta bitars siffror vardera) med ett blanksteg. Ange \fI\-g 0\fP fr att +undertrycka gruppering. <\fIBytes\fP> \-standardvrdet r \fI2\fP i +normalt lge, \fI4\fP i little\-endian\-lge och \fI1\fP i bits\-lge. Gruppering +gller inte fr PostScript eller inkluderingsstil. +.TP +\fI\-h\fP | \fI\-help\fP +Skriv ut en sammanfattning av tillgngliga kommandon och avsluta. Ingen +hexdumpning utfrs. +.TP +\fI\-i\fP | \fI\-include\fP +Utdata i C\-inkluderingsfilformat. En komplett statisk arraydefinition skrivs +(uppkallad efter inmatningsfilen), svida inte xxd lser frn stdin. Kan +kombineras med \-b. +.TP +\fI\-l len \fP|\fI \-len len\fP +Stanna efter att ha skrivit <\fIlen\fP> oktetter. +.TP +\fI\-n name | \-name namn\fP +sidostt variabelnamnets utdata nr \-i anvnds. Arrayen heter \fIname\fP och +lngden heter \fIname\fP_len. +.TP +\fI\-o offset\fP +Lgg till <\fIoffset\fP> till den visade filpositionen. +.TP +\fI\-p\fP | \fI\-ps\fP | \fI\-postscript\fP | \fI\-plain\fP +Utdata i PostScript\-format med kontinuerlig hexdump. Kallas ven vanlig +hexdump. +.TP +\fI\-r\fP | \fI\-revert\fP +Omvnd operation: konvertera (eller patcha) hexdump till binr. Om xxd inte +skriver till stdout, skriver det till sin utdatafil utan att trunka +den. Anvnd kombinationen \fI\-r \-p\fP fr att lsa vanliga hexadecimala +dumpningar utan radnummerinformation och utan en srskild +kolumnlayout. Extra blanksteg och radbrytningar r tilltna var som +helst. Anvnd kombinationen \fI\-r \-b\fP fr att lsa en bitdump istllet fr en +hexdump. +.TP +\fI\-R\fP \fIwhen\fP +I utdata frgas bde hexvrdet och vrdet med samma frg beroende p +hexvrdet. Detta hjlper frmst till att skilja mellan utskrivbara och +icke\-utskrivbara tecken. \fIwhen\fP r \fBnever\fP, \fBalways\fP eller \fBauto\fP +(standard: auto). Nr miljvariabeln \fB$NO_COLOR\fP r instlld inaktiveras +frglggningen. +.TP +\fI\-seek offset\fP +Nr det anvnds efter \fI\-r\fP: terstll med <\fIoffset\fP> lggs till i +filpositioner som hittas i hexdump. +.TP +\fI\-s [+][\-]seek\fP +Brja vid <\fIseek\fP> byte absolut (eller relativ) infile offset. \fI+ \fPanger att skningen r relativ till den aktuella stdin\-filpositionen +(meningslst nr man inte lser frn stdin). \fI\- \fPanger att skningen ska +ske s mnga tecken frn slutet av inmatningen (eller om det kombineras med +\fI+\fP: fre den aktuella stdin\-filpositionen). Utan flaggan \-s brjar xxd +vid den aktuella filpositionen. +.TP +\fI\-u\fP +Anvnd versaler fr hexadecimala bokstver. Standard r gemener. +.TP +\fI\-v\fP | \fI\-version\fP +Visa versionsstrng. +.SH VARNINGAR +.PP +\fIxxd \-r\fP finns en inbyggd funktion som utvrderar radnummerinformation. Om +utdatafilen r skbar kan radnumren i brjan av varje hexdump\-rad vara i fel +ordning, rader kan saknas eller verlappa varandra. I dessa fall kommer xxd +att lseek(2) till nsta position. Om utdatafilen inte r skbar r endast +luckor tilltna, vilka kommer att fyllas med nolltecken. +.PP +\fIxxd \-r\fP genereras aldrig parsningsfel. Skrp ignoreras tyst. +.PP +Nr du redigerar hexdumps, observera att \fIxxd \-r\fP hoppar ver allt p +inmatningsraden efter att ha lst tillrckligt mnga kolumner med +hexadecimal data (se flaggan \-c). Detta innebr ocks att ndringar i de +utskrivbara ASCII\- (eller EBCDIC\-) kolumnerna alltid +ignoreras. terstllning av en vanlig (eller PostScript) hexdump med xxd \-r +\-p r inte beroende av rtt antal kolumner. Hr tolkas allt som ser ut som +ett par hexadecimala siffror. +.PP +Observera skillnaden mellan +.br +\fI% xxd \-i fil\fP +.br +och +.br +\fI% xxd \-i < fil\fP +.PP +\fIxxd \-s +seek\fP kan skilja sig frn \fIxxd \-s seek\fP, eftersom lseek(2) +anvnds fr att "spola tillbaka" indata. Ett '+' gr skillnad om +indatakllan r stdin och om stdins filposition inte r i brjan av filen +nr xxd startas och fr sin indata. Fljande exempel kan hjlpa till att +frtydliga (eller frvirra ytterligare!): +.PP +Spola tillbaka stdin innan lsning; ndvndigt eftersom `cat' redan har lst +till slutet av stdin. +.br +\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fP +.PP +Hexdump frn filposition 0x480 (=1024+128) och framt. Tecknet "+" betyder +"relativt till aktuell position", s "128" lggs till 1k dr dd slutade. +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fP +.PP +Hexdump frn filposition 0x100 (=1024\-768) och framt. +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fP +.PP +Detta r dock en sllsynt situation och anvndningen av `+' behvs +sllan. Frfattaren fredrar att vervaka effekten av xxd med strace(1) +eller truss(1) nr \-s anvnds. +.SH EXEMPEL +.PP +.br +Skriv ut allt utom de tre frsta raderna (hex 0x30 byte) av \fBfile\fP. +.br +\fI% xxd \-s 0x30 fil\fP +.PP +.br +Skriv ut 3 rader (hex 0x30 byte) frn slutet av \fBfile\fP. +.br +\fI% xxd \-s \-0x30 fil\fP +.PP +Observera: Resultaten i exemplen nedan r relevanta fr xxd.1\-man\-sidan frn +maj 2024 +.PP +.br +Skriv ut 120 byte som en kontinuerlig hexdump med 20 oktetter per rad. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fP +.br +2e544820585844203120224d6179203230323422 +.br +20224d616e75616c207061676520666f72207878 +.br +64220a2e5c220a2e5c222032317374204d617920 +.br +313939360a2e5c22204d616e2070616765206175 +.br +74686f723a0a2e5c2220202020546f6e79204e75 +.br +67656e74203c746f6e79407363746e7567656e2e +.br + +.br +Hexdump de frsta 120 byte av denna man\-sida med 12 oktetter per rad. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fP +.br +00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma +.br +00000018: 6e75 616c 2070 6167 6520 666f manuell sida fr +.br +00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\e".. +.br +00000030: 5c22 2032 3173 7420 4d61 7920 \e" 21 maj +.br +0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\e" Man +.br +00000048: 2070 6167 6520 6175 7468 6f72 sidans frfattare +.br +00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\e" Ton +.br +00000060: 7920 4e75 6765 6e74 203c 746f y Nugent output_file\fP +.br + +.br +Korrigera datumet i filen xxd.1 +.br +\fI% echo "0000034: 3574 68" | xxd \-r \- xxd.1\fP +.br +\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fP +.br +00000033: 3235 7468 204d 6179 2031 3939 36 25 maj 1996 +.PP +.br +Skapa en fil p 65537 byte med alla byte 0x00, frutom den sista som r 'A' +(hex 0x41). +.br +\fI% echo "010000: 41" | xxd \-r > fil\fP +.PP +.br +Hexdump denna fil med autoskip. +.br +\fI% xxd \-a \-c 12 fil\fP +.br +00000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +0000fffc: 0000 0000 41 ....A +.PP +Skapa en 1 byte\-fil som innehller ett enda 'A'\-tecken. Siffran efter '\-r +\-s' lggs till radnumren i filen; i praktiken undertrycks de inledande +bytena. +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > fil\fP +.PP +Anvnd xxd som filter i en redigerare som \fBvim(1)\fP fr att hexdumpning av +ett omrde markerat mellan `a' och `z'. +.br +\fI:'a,'z!xxd\fP +.PP +Anvnd xxd som filter i en redigerare som \fBvim(1)\fP fr att terstlla en +binr hexdump markerad mellan `a' och `z'. +.br +\fI:'a,'z!xxd \-r\fP +.PP +Anvnd xxd som filter i en redigerare som \fBvim(1)\fP fr att terstlla en +rad i en hexdump. Flytta markren ver raden och skriv: +.br +\fI!!xxd \-r\fP +.PP +Ls enskilda tecken frn en seriell linje +.br +\fI% xxd \-c1 < /dev/term/b &\fP +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fP +.br +\fI% echo \-n foo > /dev/term/b\fP +.PP +.SH RETURVRDEN +Fljande felvrden returneras: +.TP +0 +inga fel upptcktes. +.TP +\-1 +operationen stds inte \%(\fI\%xxd \-r \-i\fP fortfarande omjligt). +.TP +1 +fel vid tolkning av flaggor. +.TP +2 +problem med inmatningsfilen. +.TP +3 +problem med utdatafilen. +.TP +4,5 +nskad skposition r ouppnelig. +.SH "SE VEN" +uuencode(1), uudecode(1), patch(1) +.br +.SH VARNINGAR +Verktygets konstighet matchar dess skapares hjrna. Anvnd helt p egen +risk. Kopiera filer. Spra dem. Bli en trollkarl. +.br +.SH VERSION +Denna manual sida dokumenterar xxd version 1.7 frn 2024\-05. +.SH UPPHOVSPERSON +.br +(c) 1990\-1997 av Juergen Weigert +.br + +.LP +Distribuera fritt och ange mig som klla, +.br +tjna pengar och dela med mig, +.br +frlora pengar och frga inte mig. +.PP +Manualsida skapad av Tony Nugent +.br + +.br +Sm ndringar av Bram Moolenaar. Redigerat av Juergen Weigert. +.PP +.SH SVENSK VERSTTNING +Vim versattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt sjlva Vim. +Om du hittar fel i versttningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/xxd-sv.UTF-8.1 b/runtime/doc/xxd-sv.UTF-8.1 new file mode 100644 index 00000000..e79dd3a1 --- /dev/null +++ b/runtime/doc/xxd-sv.UTF-8.1 @@ -0,0 +1,363 @@ +.\"******************************************************************* +.\" +.\" This file was generated with po4a. Translate the source file. +.\" +.\"******************************************************************* +.TH XXD 1 "Maj 2024" "Manualsida för xxd" +.\" +.\" 21st May 1996 +.\" Man page author: +.\" Tony Nugent +.\" Changes by Bram Moolenaar +.SH NAMN +\fIxxd\fP \- gör en hexdump eller gör det omvända. +.SH SYNOPSIS +\fBxxd\fP \-h[elp] +.br +\fBxxd\fP [flaggor] [infil [utfil]] +.br +\fBxxd\fP \-r[evert] [flaggor] [infil [utfil]] +.SH BESKRIVNING +\fIxxd\fP skapar en hexdump av en given fil eller standardinmatning. Det kan +också konvertera en hexdump tillbaka till sin ursprungliga binära form. +Liksom \fBuuencode\fP(1) och \fBuudecode\fP(1) tillåter det överföring av binär +data i en "mail\-safe" ASCII\-representation, men har fördelen att avkoda till +standardutmatning. Dessutom kan det användas för att utföra binär +filpatchning. +.SH FLAGGOR +Om ingen \fIinfile\fP anges, läses standardinmatningen. Om \fIinfile\fP anges som +ett \`\fB\-\fP'\-tecken, hämtas inmatningen från standardinmatningen. Om ingen +\fIoutfile\fP anges (eller om ett \`\fB\-\fP'\-tecken finns på dess plats), skickas +resultaten till standardutmatningen. +.PP +Observera att en "lat" parser används som inte kontrollerar mer än den +första optionsbokstaven, såvida inte optionen följs av en parameter. +Mellanslag mellan en enskild optionsbokstav och dess parameter är valfria. +Parametrar till optioner kan anges i decimal\-, hexadecimal\- eller +oktalnotation. Således är \fB\-c8\fP, \fB\-c 8\fP, \fB\-c 010\fP och \fB\-cols 8\fP alla +likvärdiga. +.PP +.TP +\fI\-a\fP | \fI\-autoskip\fP +Växla autoskip: En enda '*' ersätter NUL\-rader. Standardinställning är av. +.TP +\fI\-b\fP | \fI\-bits\fP +Växla till bitdump (binära siffror) istället för hexdump. Den här flaggan +skriver oktetter som åtta siffror "1" och "0" istället för en vanlig +hexadecimal dump. Varje rad föregås av ett radnummer i hexadecimal och följs +av en ASCII\- (eller EBCDIC\-) representation. Kommandoradsväxeln \-p fungerar +inte i det här läget. Kan kombineras med \-i. +.TP +\fI\-c cols \fP|\fI \-cols kolumner\fP +Format <\fIcols\fP> oktetter per rad. Standard 16 (\-i: 12, \-ps: 30, \-b: +6). Max 256. Inget maximum för \-ps. Med \-ps resulterar 0 i en lång rad med +utdata. +.TP +\fI\-C\fP | \fI\-capitalize\fP +Använd versaler för variabelnamn i C\-inkluderingsfilformat när du använder +\-i. +.TP +\fI\-d\fP +visa offset i decimal istället för hex. +.TP +\fI\-E\fP | \fI\-EBCDIC\fP +Ändra teckenkodningen i den högra kolumnen från ASCII till EBCDIC. Detta +ändrar inte den hexadecimala representationen. Flaggan är meningslös i +kombination med \-r, \-p eller \-i. +.TP +\fI\-e\fP +Byt till little\-endian hex dump. Denna flagga behandlar byte\-grupper som +ord i little\-endian byte\-ordning. Standardgrupperingen på 4 byte kan ändras +med \fI\-g\fP. Denna flagga gäller endast hex dump, ASCII\- (eller EBCDIC\-) +representationen förblir oförändrad. Kommandoradsväxlarna \-r, \-p, \-i +fungerar inte i detta läge. +.TP +\fI\-g bytes \fP|\fI \-groupsize byte\fP +Separera utdata för varje <\fIbytes\fP> \-byte (två hexadecimala tecken +eller åtta bitars siffror vardera) med ett blanksteg. Ange \fI\-g 0\fP för att +undertrycka gruppering. <\fIBytes\fP> \-standardvärdet är \fI2\fP i +normalt läge, \fI4\fP i little\-endian\-läge och \fI1\fP i bits\-läge. Gruppering +gäller inte för PostScript eller inkluderingsstil. +.TP +\fI\-h\fP | \fI\-help\fP +Skriv ut en sammanfattning av tillgängliga kommandon och avsluta. Ingen +hexdumpning utförs. +.TP +\fI\-i\fP | \fI\-include\fP +Utdata i C\-inkluderingsfilformat. En komplett statisk arraydefinition skrivs +(uppkallad efter inmatningsfilen), såvida inte xxd läser från stdin. Kan +kombineras med \-b. +.TP +\fI\-l len \fP|\fI \-len len\fP +Stanna efter att ha skrivit <\fIlen\fP> oktetter. +.TP +\fI\-n name | \-name namn\fP +Åsidosätt variabelnamnets utdata när \-i används. Arrayen heter \fIname\fP och +längden heter \fIname\fP_len. +.TP +\fI\-o offset\fP +Lägg till <\fIoffset\fP> till den visade filpositionen. +.TP +\fI\-p\fP | \fI\-ps\fP | \fI\-postscript\fP | \fI\-plain\fP +Utdata i PostScript\-format med kontinuerlig hexdump. Kallas även vanlig +hexdump. +.TP +\fI\-r\fP | \fI\-revert\fP +Omvänd operation: konvertera (eller patcha) hexdump till binär. Om xxd inte +skriver till stdout, skriver det till sin utdatafil utan att trunka +den. Använd kombinationen \fI\-r \-p\fP för att läsa vanliga hexadecimala +dumpningar utan radnummerinformation och utan en särskild +kolumnlayout. Extra blanksteg och radbrytningar är tillåtna var som +helst. Använd kombinationen \fI\-r \-b\fP för att läsa en bitdump istället för en +hexdump. +.TP +\fI\-R\fP \fIwhen\fP +I utdata färgas både hexvärdet och värdet med samma färg beroende på +hexvärdet. Detta hjälper främst till att skilja mellan utskrivbara och +icke\-utskrivbara tecken. \fIwhen\fP är \fBnever\fP, \fBalways\fP eller \fBauto\fP +(standard: auto). När miljövariabeln \fB$NO_COLOR\fP är inställd inaktiveras +färgläggningen. +.TP +\fI\-seek offset\fP +När det används efter \fI\-r\fP: återställ med <\fIoffset\fP> läggs till i +filpositioner som hittas i hexdump. +.TP +\fI\-s [+][\-]seek\fP +Börja vid <\fIseek\fP> byte absolut (eller relativ) infile offset. \fI+ \fPanger att sökningen är relativ till den aktuella stdin\-filpositionen +(meningslöst när man inte läser från stdin). \fI\- \fPanger att sökningen ska +ske så många tecken från slutet av inmatningen (eller om det kombineras med +\fI+\fP: före den aktuella stdin\-filpositionen). Utan flaggan \-s börjar xxd +vid den aktuella filpositionen. +.TP +\fI\-u\fP +Använd versaler för hexadecimala bokstäver. Standard är gemener. +.TP +\fI\-v\fP | \fI\-version\fP +Visa versionssträng. +.SH VARNINGAR +.PP +\fIxxd \-r\fP finns en inbyggd funktion som utvärderar radnummerinformation. Om +utdatafilen är sökbar kan radnumren i början av varje hexdump\-rad vara i fel +ordning, rader kan saknas eller överlappa varandra. I dessa fall kommer xxd +att lseek(2) till nästa position. Om utdatafilen inte är sökbar är endast +luckor tillåtna, vilka kommer att fyllas med nolltecken. +.PP +\fIxxd \-r\fP genereras aldrig parsningsfel. Skräp ignoreras tyst. +.PP +När du redigerar hexdumps, observera att \fIxxd \-r\fP hoppar över allt på +inmatningsraden efter att ha läst tillräckligt många kolumner med +hexadecimal data (se flaggan \-c). Detta innebär också att ändringar i de +utskrivbara ASCII\- (eller EBCDIC\-) kolumnerna alltid +ignoreras. Återställning av en vanlig (eller PostScript) hexdump med xxd \-r +\-p är inte beroende av rätt antal kolumner. Här tolkas allt som ser ut som +ett par hexadecimala siffror. +.PP +Observera skillnaden mellan +.br +\fI% xxd \-i fil\fP +.br +och +.br +\fI% xxd \-i < fil\fP +.PP +\fIxxd \-s +seek\fP kan skilja sig från \fIxxd \-s seek\fP, eftersom lseek(2) +används för att "spola tillbaka" indata. Ett '+' gör skillnad om +indatakällan är stdin och om stdins filposition inte är i början av filen +när xxd startas och får sin indata. Följande exempel kan hjälpa till att +förtydliga (eller förvirra ytterligare!): +.PP +Spola tillbaka stdin innan läsning; nödvändigt eftersom `cat' redan har läst +till slutet av stdin. +.br +\fI% sh \-c "cat > plain_copy; xxd \-s 0 > hex_copy" < file\fP +.PP +Hexdump från filposition 0x480 (=1024+128) och framåt. Tecknet "+" betyder +"relativt till aktuell position", så "128" läggs till 1k där dd slutade. +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +128 > hex_snippet" < file\fP +.PP +Hexdump från filposition 0x100 (=1024\-768) och framåt. +.br +\fI% sh \-c "dd of=plain_snippet bs=1k count=1; xxd \-s +\-768 > hex_snippet" < file\fP +.PP +Detta är dock en sällsynt situation och användningen av `+' behövs +sällan. Författaren föredrar att övervaka effekten av xxd med strace(1) +eller truss(1) när \-s används. +.SH EXEMPEL +.PP +.br +Skriv ut allt utom de tre första raderna (hex 0x30 byte) av \fBfile\fP. +.br +\fI% xxd \-s 0x30 fil\fP +.PP +.br +Skriv ut 3 rader (hex 0x30 byte) från slutet av \fBfile\fP. +.br +\fI% xxd \-s \-0x30 fil\fP +.PP +Observera: Resultaten i exemplen nedan är relevanta för xxd.1\-man\-sidan från +maj 2024 +.PP +.br +Skriv ut 120 byte som en kontinuerlig hexdump med 20 oktetter per rad. +.br +\fI% xxd \-l 120 \-ps \-c 20 xxd.1\fP +.br +2e544820585844203120224d6179203230323422 +.br +20224d616e75616c207061676520666f72207878 +.br +64220a2e5c220a2e5c222032317374204d617920 +.br +313939360a2e5c22204d616e2070616765206175 +.br +74686f723a0a2e5c2220202020546f6e79204e75 +.br +67656e74203c746f6e79407363746e7567656e2e +.br + +.br +Hexdump de första 120 byte av denna man\-sida med 12 oktetter per rad. +.br +\fI% xxd \-l 120 \-c 12 xxd.1\fP +.br +00000000: 2e54 4820 5858 4420 3120 224d .TH XXD 1 "M +.br +0000000c: 6179 2032 3032 3422 2022 4d61 ay 2024" "Ma +.br +00000018: 6e75 616c 2070 6167 6520 666f manuell sida för +.br +00000024: 7220 7878 6422 0a2e 5c22 0a2e r xxd"..\e".. +.br +00000030: 5c22 2032 3173 7420 4d61 7920 \e" 21 maj +.br +0000003c: 3139 3936 0a2e 5c22 204d 616e 1996..\e" Man +.br +00000048: 2070 6167 6520 6175 7468 6f72 sidans författare +.br +00000054: 3a0a 2e5c 2220 2020 2054 6f6e :..\e" Ton +.br +00000060: 7920 4e75 6765 6e74 203c 746f y Nugent output_file\fP +.br + +.br +Korrigera datumet i filen xxd.1 +.br +\fI% echo "0000034: 3574 68" | xxd \-r \- xxd.1\fP +.br +\fI% xxd \-s 0x33 \-l 13 \-c 13 xxd.1\fP +.br +00000033: 3235 7468 204d 6179 2031 3939 36 25 maj 1996 +.PP +.br +Skapa en fil på 65537 byte med alla byte 0x00, förutom den sista som är 'A' +(hex 0x41). +.br +\fI% echo "010000: 41" | xxd \-r > fil\fP +.PP +.br +Hexdump denna fil med autoskip. +.br +\fI% xxd \-a \-c 12 fil\fP +.br +00000000: 0000 0000 0000 0000 0000 0000 ............ +.br +* +.br +0000fffc: 0000 0000 41 ....A +.PP +Skapa en 1 byte\-fil som innehåller ett enda 'A'\-tecken. Siffran efter '\-r +\-s' läggs till radnumren i filen; i praktiken undertrycks de inledande +bytena. +.br +\fI% echo "010000: 41" | xxd \-r \-s \-0x10000 > fil\fP +.PP +Använd xxd som filter i en redigerare som \fBvim(1)\fP för att hexdumpning av +ett område markerat mellan `a' och `z'. +.br +\fI:'a,'z!xxd\fP +.PP +Använd xxd som filter i en redigerare som \fBvim(1)\fP för att återställa en +binär hexdump markerad mellan `a' och `z'. +.br +\fI:'a,'z!xxd \-r\fP +.PP +Använd xxd som filter i en redigerare som \fBvim(1)\fP för att återställa en +rad i en hexdump. Flytta markören över raden och skriv: +.br +\fI!!xxd \-r\fP +.PP +Läs enskilda tecken från en seriell linje +.br +\fI% xxd \-c1 < /dev/term/b &\fP +.br +\fI% stty < /dev/term/b \-echo \-opost \-isig \-icanon min 1\fP +.br +\fI% echo \-n foo > /dev/term/b\fP +.PP +.SH RETURVÄRDEN +Följande felvärden returneras: +.TP +0 +inga fel upptäcktes. +.TP +\-1 +operationen stöds inte \%(\fI\%xxd \-r \-i\fP fortfarande omöjligt). +.TP +1 +fel vid tolkning av flaggor. +.TP +2 +problem med inmatningsfilen. +.TP +3 +problem med utdatafilen. +.TP +4,5 +önskad sökposition är ouppnåelig. +.SH "SE ÄVEN" +uuencode(1), uudecode(1), patch(1) +.br +.SH VARNINGAR +Verktygets konstighet matchar dess skapares hjärna. Använd helt på egen +risk. Kopiera filer. Spåra dem. Bli en trollkarl. +.br +.SH VERSION +Denna manual sida dokumenterar xxd version 1.7 från 2024\-05. +.SH UPPHOVSPERSON +.br +(c) 1990\-1997 av Juergen Weigert +.br + +.LP +Distribuera fritt och ange mig som källa, +.br +tjäna pengar och dela med mig, +.br +förlora pengar och fråga inte mig. +.PP +Manualsida skapad av Tony Nugent +.br + +.br +Små ändringar av Bram Moolenaar. Redigerat av Juergen Weigert. +.PP +.SH SVENSK ÖVERSÄTTNING +Vim översattes ursprungligen av Johan Svedberg 2003-2007 och har under 2025 +uppdaterats av Daniel Nylander, speciellt manualsidor samt själva Vim. +Om du hittar fel i översättningen, kontakta . \ No newline at end of file diff --git a/runtime/doc/xxd.1 b/runtime/doc/xxd.1 index 2c6d5ad9..ce6b24da 100644 --- a/runtime/doc/xxd.1 +++ b/runtime/doc/xxd.1 @@ -1,4 +1,4 @@ -.TH XXD 1 "May 2024" "Manual page for xxd" +.TH XXD 1 "Mar 2026" "Manual page for xxd" .\" .\" 21st May 1996 .\" Man page author: @@ -169,6 +169,9 @@ should be that many characters from the end of the input (or if combined with \fI+\fR: before the current stdin file position). Without \-s option, xxd starts at the current file position. .TP +.I \-t +When outputting in C include file style using \-i include the terminating zero. +.TP .I \-u Use upper-case hex letters. Default is lower-case. .TP @@ -363,6 +366,20 @@ Read single characters from a serial line .br \fI% echo \-n foo > /dev/term/b\fR .PP +Output in C style include output with terminating zero +.br +\fI% echo -n \&"0123456789\&" > digits\fR +.br +\fI% xxd -i -t digits\fR +.br +unsigned char digits[] = { +.br + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00 +.br +}; +.br +unsigned int digits_len = 10; +.PP .SH "RETURN VALUES" The following error values are returned: .TP diff --git a/runtime/doc/xxd.man b/runtime/doc/xxd.man index 38106e1a..7fe6bca0 100644 --- a/runtime/doc/xxd.man +++ b/runtime/doc/xxd.man @@ -119,26 +119,29 @@ OPTIONS (or if combined with +: before the current stdin file position). Without -s option, xxd starts at the current file position. + -t When outputting in C include file style using -i include the + terminating zero. + -u Use upper-case hex letters. Default is lower-case. -v | -version Show version string. CAVEATS - xxd -r has some built-in magic while evaluating line number informa‐ - tion. If the output file is seekable, then the line numbers at the - start of each hex dump line may be out of order, lines may be missing, - or overlapping. In these cases xxd will lseek(2) to the next position. - If the output file is not seekable, only gaps are allowed, which will + xxd -r has some built-in magic while evaluating line number informa‐ + tion. If the output file is seekable, then the line numbers at the + start of each hex dump line may be out of order, lines may be missing, + or overlapping. In these cases xxd will lseek(2) to the next position. + If the output file is not seekable, only gaps are allowed, which will be filled by null-bytes. xxd -r never generates parse errors. Garbage is silently skipped. When editing hex dumps, please note that xxd -r skips everything on the input line after reading enough columns of hexadecimal data (see option - -c). This also means that changes to the printable ASCII (or EBCDIC) + -c). This also means that changes to the printable ASCII (or EBCDIC) columns are always ignored. Reverting a plain (or PostScript) style hex - dump with xxd -r -p does not depend on the correct number of columns. + dump with xxd -r -p does not depend on the correct number of columns. Here, anything that looks like a pair of hex digits is interpreted. Note the difference between @@ -146,28 +149,28 @@ CAVEATS and % xxd -i < file - xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to + xxd -s +seek may be different from xxd -s seek, as lseek(2) is used to "rewind" input. A '+' makes a difference if the input source is stdin, - and if stdin's file position is not at the start of the file by the - time xxd is started and given its input. The following examples may + and if stdin's file position is not at the start of the file by the + time xxd is started and given its input. The following examples may help to clarify (or further confuse!): - Rewind stdin before reading; needed because the `cat' has already read + Rewind stdin before reading; needed because the `cat' has already read to the end of stdin. % sh -c "cat > plain_copy; xxd -s 0 > hex_copy" < file - Hex dump from file position 0x480 (=1024+128) onwards. The `+' sign + Hex dump from file position 0x480 (=1024+128) onwards. The `+' sign means "relative to the current position", thus the `128' adds to the 1k where dd left off. - % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" + % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +128 > hex_snippet" < file Hex dump from file position 0x100 (=1024-768) onwards. % sh -c "dd of=plain_snippet bs=1k count=1; xxd -s +-768 > hex_snippet" < file - However, this is a rare situation and the use of `+' is rarely needed. - The author prefers to monitor the effect of xxd with strace(1) or + However, this is a rare situation and the use of `+' is rarely needed. + The author prefers to monitor the effect of xxd with strace(1) or truss(1), whenever -s is used. EXAMPLES @@ -177,7 +180,7 @@ EXAMPLES Print 3 lines (hex 0x30 bytes) from the end of file. % xxd -s -0x30 file - Note: The results of the examples below are relevant to the xxd.1 man + Note: The results of the examples below are relevant to the xxd.1 man page as of May 2024 Print 120 bytes as a continuous hex dump with 20 octets per line. @@ -214,7 +217,7 @@ EXAMPLES % xxd -s 0x33 -l 13 -c 13 xxd.1 00000033: 3235 7468 204d 6179 2031 3939 36 25th May 1996 - Create a 65537 byte file with all bytes 0x00, except for the last one + Create a 65537 byte file with all bytes 0x00, except for the last one which is 'A' (hex 0x41). % echo "010000: 41" | xxd -r > file @@ -225,11 +228,11 @@ EXAMPLES 0000fffc: 0000 0000 41 ....A Create a 1 byte file containing a single 'A' character. The number af‐ - ter '-r -s' adds to the line numbers found in the file; in effect, the + ter '-r -s' adds to the line numbers found in the file; in effect, the leading bytes are suppressed. % echo "010000: 41" | xxd -r -s -0x10000 > file - Use xxd as a filter within an editor such as vim(1) to hex dump a re‐ + Use xxd as a filter within an editor such as vim(1) to hex dump a re‐ gion marked between `a' and `z'. :'a,'z!xxd @@ -246,6 +249,14 @@ EXAMPLES % stty < /dev/term/b -echo -opost -isig -icanon min 1 % echo -n foo > /dev/term/b + Output in C style include output with terminating zero + % echo -n "0123456789" > digits + % xxd -i -t digits + unsigned char digits[] = { + 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00 + }; + unsigned int digits_len = 10; + RETURN VALUES The following error values are returned: @@ -283,4 +294,4 @@ AUTHOR Small changes by Bram Moolenaar. Edited by Juergen Weigert. -Manual page for xxd May 2024 XXD(1) +Manual page for xxd Mar 2026 XXD(1) diff --git a/runtime/filetype.vim b/runtime/filetype.vim index 9a6febdb..6252563d 100644 --- a/runtime/filetype.vim +++ b/runtime/filetype.vim @@ -1,7 +1,7 @@ " Vim support file to detect file types " " Maintainer: The Vim Project -" Last Change: 2025 Oct 09 +" Last Change: 2026 Mar 19 " Former Maintainer: Bram Moolenaar " If the filetype can be detected from extension or file name(the final path component), @@ -427,11 +427,15 @@ au BufNewFile,BufRead *.e,*.E call dist#ft#FTe() " Elm Filter Rules file au BufNewFile,BufRead filter-rules setf elmfilt +" Erlang Application Resource Files +au BufNewFile,BufRead *.app.src setf erlang +au BufNewFile,BufRead *.app call dist#ft#FTapp() + " ESMTP rc file au BufNewFile,BufRead *esmtprc setf esmtprc " Fennel -au BufNewFile,BufRead *.fnl,{,.}fennelrc setf fennel +au BufNewFile,BufRead {,.}fennelrc setf fennel " Flatpak config au BufNewFile,BufRead */flatpak/repo/config setf dosini @@ -531,7 +535,6 @@ au BufNewFile,BufRead init.trans,*/etc/translate-shell,.trans setf clojure " HTML (.stm for server side, .shtml is server-side or superhtml) au BufNewFile,BufRead *.html,*.htm,*.shtml,*.stm call dist#ft#FThtml() -au BufNewFile,BufRead *.cshtml setf html " Host config au BufNewFile,BufRead */etc/host.conf setf hostconf @@ -774,12 +777,13 @@ au BufNewFile,BufRead */neofetch/config.conf setf sh " Nginx au BufNewFile,BufRead *.nginx,nginx*.conf,*nginx.conf,*/nginx/*.conf setf nginx -" Nroff/Troff (*.ms and *.t are checked below) +" Nroff/Groff/Troff (*.ms and *.t are checked below) au BufNewFile,BufRead *.me \ if expand("") != "read.me" && expand("") != "click.me" | \ setf nroff | \ endif -au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac,*.mom setf nroff +au BufNewFile,BufRead *.tr,*.nr,*.roff,*.tmac setf nroff +au BufNewFile,BufRead *.groff,*.mom setf groff au BufNewFile,BufRead *.[0-9],*.[013]p,*.[1-8]x,*.3{am,perl,pm,posix,type},*.n call dist#ft#FTnroff() " Nroff or Objective C++ @@ -1023,7 +1027,7 @@ au BufNewFile,BufRead *.decl,*.dcl,*.dec " NOTE: Patterns ending in a star are further down, these have lower priority. au BufNewFile,BufRead .bashrc,bashrc,bash.bashrc,.bash[_-]profile,.bash[_-]logout,.bash[_-]aliases,.bash[_-]history,bash-fc[-.],*.ebuild,*.bash,*.eclass,PKGBUILD,*.bats,*.cygport call dist#ft#SetFileTypeSH("bash") au BufNewFile,BufRead .kshrc,*.ksh call dist#ft#SetFileTypeSH("ksh") -au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.env{rc,} call dist#ft#SetFileTypeSH(getline(1)) +au BufNewFile,BufRead */etc/profile,.profile,*.sh,*.envrc,.envrc.* call dist#ft#SetFileTypeSH(getline(1)) " Shell script (Arch Linux) or PHP file (Drupal) au BufNewFile,BufRead *.install \ if getline(1) =~ ' ('commentstring') +" 2026 Jan 19 by Vim Project (add # as comment symbol) if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 setl include=^\\s*%\\s*include -setl comments=:;,s1:/*,mb:*,ex:*/,:// +setl comments=:;,s1:/*,mb:*,ex:*/,://,:# setl commentstring=;\ %s let b:undo_ftplugin = "setl commentstring< comments< include<" diff --git a/runtime/ftplugin/bicep-params.vim b/runtime/ftplugin/bicep-params.vim new file mode 100644 index 00000000..7cc2d851 --- /dev/null +++ b/runtime/ftplugin/bicep-params.vim @@ -0,0 +1,3 @@ +" Placeholder for maximum compatibility. While bicepparam files are treated as distinct filetypes, +" they are should share the same ftplugin settings as bicep files. +runtime! ftplugin/bicep.vim diff --git a/runtime/ftplugin/bicep.vim b/runtime/ftplugin/bicep.vim new file mode 100644 index 00000000..f142daf1 --- /dev/null +++ b/runtime/ftplugin/bicep.vim @@ -0,0 +1,14 @@ +" Vim filetype plugin +" Language: Bicep +" Maintainer: Scott McKendry +" Last Change: 2025 Dec 27 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=s1:/*,mb:*,ex:*/,:// +setlocal commentstring=//\ %s + +let b:undo_ftplugin = "setlocal comments< commentstring<" diff --git a/runtime/ftplugin/bpftrace.vim b/runtime/ftplugin/bpftrace.vim new file mode 100644 index 00000000..73772b10 --- /dev/null +++ b/runtime/ftplugin/bpftrace.vim @@ -0,0 +1,16 @@ +" Vim filetype plugin +" Language: bpftrace +" Maintainer: Stanislaw Gruszka +" Last Change: 2025 Dec 23 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// +setlocal commentstring=//\ %s + +setlocal formatoptions-=t formatoptions+=croql + +let b:undo_ftplugin = "setlocal comments< commentstring< formatoptions<" diff --git a/runtime/ftplugin/c.vim b/runtime/ftplugin/c.vim index 42a435f1..97111121 100644 --- a/runtime/ftplugin/c.vim +++ b/runtime/ftplugin/c.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: C " Maintainer: The Vim Project -" Last Change: 2025 Aug 08 +" Last Change: 2026 Feb 3 " Former Maintainer: Bram Moolenaar " Only do this when not done yet for this buffer @@ -40,6 +40,23 @@ if has("vms") setlocal iskeyword+=$ endif +" Use terminal window for gui +if has('gui_running') && exists(':terminal') == 2 && executable("man") + setlocal keywordprg=:CKeywordPrg + + command! -buffer -nargs=1 -count CKeywordPrg call s:CKeywordPrg(, ) + + function! s:CKeywordPrg(arg, count) abort + if a:count > 0 + exe printf('term ++close man -s %d %s', a:count, a:arg) + else + exe printf('term ++close man %s', a:arg) + endif + endfunction + + let b:undo_ftplugin .= ' | setl kp< | sil! delc -buffer CKeywordPrg' +endif + " When the matchit plugin is loaded, this makes the % command skip parens and " braces in comments properly. if !exists("b:match_words") diff --git a/runtime/ftplugin/cabal.vim b/runtime/ftplugin/cabal.vim index 5ccfa1df..e7e4ab18 100644 --- a/runtime/ftplugin/cabal.vim +++ b/runtime/ftplugin/cabal.vim @@ -2,12 +2,17 @@ " Language: Haskell Cabal Build file " Maintainer: Riley Bruins " Last Change: 2024 Jul 06 +" 2026 Jan 13 by Vim project: set compiler #19152 if exists('b:did_ftplugin') finish endif let b:did_ftplugin = 1 +compiler cabal + +let b:undo_ftplugin = 'compiler make' + setl comments=:-- commentstring=--\ %s -let b:undo_ftplugin = 'setl com< cms<' +let b:undo_ftplugin .= '| setl com< cms<' diff --git a/runtime/ftplugin/context.vim b/runtime/ftplugin/context.vim index b39a306d..79b59723 100644 --- a/runtime/ftplugin/context.vim +++ b/runtime/ftplugin/context.vim @@ -4,7 +4,7 @@ vim9script # Language: ConTeXt typesetting engine # Maintainer: Nicola Vitacolonna # Former Maintainers: Nikolai Weibull -# Latest Revision: 2024 Oct 04 +# Latest Revision: 2026 Jan 10 if exists("b:did_ftplugin") finish @@ -110,7 +110,7 @@ endif b:undo_ftplugin ..= "| sil! delc -buffer ConTeXt | sil! delc -buffer ConTeXtLog | sil! delc -buffer ConTeXtJobStatus | sil! delc -buffer ConTeXtStopJobs" # Commands for asynchronous typesetting command! -buffer -nargs=? -complete=buffer ConTeXt context.Typeset() -command! -buffer -nargs=0 ConTeXtLog context.Log('%') +command! -buffer -nargs=0 ConTeXtLog context.Log(bufname('%')) command! -nargs=0 ConTeXtJobStatus context.JobStatus() command! -nargs=0 ConTeXtStopJobs context.StopJobs() diff --git a/runtime/ftplugin/csh.vim b/runtime/ftplugin/csh.vim index 74666b96..7603d055 100644 --- a/runtime/ftplugin/csh.vim +++ b/runtime/ftplugin/csh.vim @@ -3,8 +3,8 @@ " Maintainer: Doug Kearns " Previous Maintainer: Dan Sharp " Contributor: Johannes Zellner -" Last Change: 2024 Jan 14 -" 2024 May 23 by Riley Bruins ('commentstring') +" Riley Bruins +" Last Change: 2026 Jan 16 if exists("b:did_ftplugin") finish @@ -21,29 +21,52 @@ setlocal formatoptions+=crql let b:undo_ftplugin = "setlocal com< cms< fo<" -" Csh: thanks to Johannes Zellner -" - Both foreach and end must appear alone on separate lines. -" - The words else and endif must appear at the beginning of input lines; -" the if must appear alone on its input line or after an else. -" - Each case label and the default label must appear at the start of a -" line. -" - while and end must appear alone on their input lines. if exists("loaded_matchit") && !exists("b:match_words") - let s:line_start = '\%(^\s*\)\@<=' - let b:match_words = - \ s:line_start .. 'if\s*(.*)\s*then\>:' .. - \ s:line_start .. 'else\s\+if\s*(.*)\s*then\>:' .. s:line_start .. 'else\>:' .. - \ s:line_start .. 'endif\>,' .. - \ s:line_start .. '\%(\:\:' .. - \ s:line_start .. 'end\>,' .. - \ s:line_start .. 'switch\s*(:' .. - \ s:line_start .. 'case\s\+:' .. s:line_start .. 'default\>:\:' .. - \ s:line_start .. 'endsw\>' - unlet s:line_start - let b:undo_ftplugin ..= " | unlet! b:match_words" + let b:match_ignorecase = 0 + let b:match_words = "CshMatchWords()" + let b:match_skip = "CshMatchSkip()" + let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_skip b:match_words" endif +" skip single line 'if' commands +function CshMatchSkip() + return getline(".") =~# '^\s*if\>' && !s:CshIsIfThenCommand() +endfunction + +function CshMatchWords() + let line_start = '\%(^\s*\)\@<=' + let match_words = + \ line_start .. '\%(foreach\s\+\h\w*\s*(\|while\>\):' .. + \ '\:\:' .. + \ line_start .. 'end\>,' .. + \ line_start .. 'switch\s*(:' .. + \ line_start .. 'case\s\+:' .. line_start .. 'default\>:\:' .. + \ line_start .. 'endsw\>' + + if expand("") =~# '\' && !s:CshIsIfThenCommand() + return match_words + else + return match_words .. "," .. + \ line_start .. 'if\>:' .. + \ line_start .. 'else\s\+if\>:' .. line_start .. 'else\>:' .. + \ line_start .. 'endif\>' + endif +endfunction + +function s:CshIsIfThenCommand() + let lnum = line(".") + let line = getline(lnum) + + " join continued lines + while lnum < line("$") && line =~ '^\%([^\\]\|\\\\\)*\\$' + let lnum += 1 + let line = substitute(line, '\\$', '', '') .. getline(lnum) + endwhile + + " TODO: confirm with syntax checks when the highlighting is more accurate + return line =~# '^\s*if\>.*\ " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2022 May 15 " 2024 Jan 14 by Vim Project (browsefilter) " 2024 May 23 by Riley Bruins ('commentstring') diff --git a/runtime/ftplugin/fish.vim b/runtime/ftplugin/fish.vim index 55d7ea8d..685ff4d1 100644 --- a/runtime/ftplugin/fish.vim +++ b/runtime/ftplugin/fish.vim @@ -5,10 +5,15 @@ " Last Change: February 1, 2023 " 2023 Aug 28 by Vim Project (undo_ftplugin) " 2024 May 23 by Riley Bruins ('commentstring') +" 2026 Mar 16 by Phạm Bình An (add matchit support) if exists("b:did_ftplugin") finish endif + +let s:saved_cpo = &cpo +set cpo-=C + let b:did_ftplugin = 1 setlocal iskeyword=@,48-57,_,192-255,-,. @@ -17,3 +22,20 @@ setlocal commentstring=#\ %s setlocal formatoptions+=crjq let b:undo_ftplugin = "setl cms< com< fo< isk<" + +" Define patterns for the matchit plugin +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_words = + \ '\<\%(else\s\+\)\@\|\<\%(switch\|begin\|function\|while\|for\)\>:' .. + \ '\\|\:' .. + \ '\' + + let b:match_ignorecase = 0 + let b:match_skip = "S:keyword" + + let b:undo_ftplugin ..= " | unlet! b:match_words b:match_ignorecase b:match_skip" +endif + +" Restore 'cpo' to its original value +let &cpo = s:saved_cpo +unlet s:saved_cpo diff --git a/runtime/ftplugin/gdb.vim b/runtime/ftplugin/gdb.vim index af88a04d..859d8244 100644 --- a/runtime/ftplugin/gdb.vim +++ b/runtime/ftplugin/gdb.vim @@ -1,21 +1,54 @@ " Vim filetype plugin file " Language: gdb " Maintainer: Michaël Peeters -" Last Changed: 2017-10-26 -" 2024-04-10: - add Matchit support (by Vim Project) -" 2024-04-23: - add space to commentstring (by Riley Bruins) ('commentstring') +" Contributors: Riley Bruins +" Last Changed: 2017 Oct 26 +" 2024 Apr 10: add Matchit support (by Vim Project) +" 2024 Apr 23: add space to commentstring (by Riley Bruins) ('commentstring') +" 2026 Feb 08: add browsefilter, comment formatting, and improve matchit support (by Vim Project) -if exists("b:did_ftplugin") | finish | endif +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 +setlocal formatoptions+=croql setlocal include=^\\s*source " Undo the stuff we changed. -let b:undo_ftplugin = "setlocal cms< include<" +let b:undo_ftplugin = "setlocal com< cms< fo< inc<" -" Matchit support -if !exists('b:match_words') - let b:match_words = '\<\%(if\|while\|define\|document\)\>:\:\' - let b:undo_ftplugin ..= " | unlet! b:match_words" +if exists("loaded_matchit") && !exists("b:match_words") + let b:match_ignorecase = 0 + let s:line_start = '\%(^\s*\)\@<=' + let b:match_words = + \ s:line_start .. '\%(commands\|define\|document\|if\|while\|' .. + \ '\%(py\%[thon]\|gu\%[ile]\)\%(\s*$\)\@=\|' .. + \ '\%(compi\%[le]\|exp\%[ression]\)\s\+\%(c\%[ode]\|p\%[rint]\)\)\>:' .. + \ s:line_start .. '\%(else\|loop_continue\|loop_break\)\>:' .. + \ s:line_start .. 'end\>' + unlet s:line_start + let b:undo_ftplugin ..= " | unlet! b:match_ignorecase b:match_words" endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = + \ "GDB Init Files (.gdbinit gdbinit .gdbearlyinit gdbearlyinit)\t" .. + \ ".gdbinit;gdbinit;.gdbearlyinit;gdbearlyinit\n" .. + \ "GDB Command Files (*.gdb)\t*.gdb\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif + let b:undo_ftplugin ..= " | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/ftplugin/gleam.vim b/runtime/ftplugin/gleam.vim index 3ea68fa0..fb3ae8bb 100644 --- a/runtime/ftplugin/gleam.vim +++ b/runtime/ftplugin/gleam.vim @@ -4,6 +4,7 @@ " Previous Maintainer: Trilowy (https://github.com/trilowy) " Based On: https://github.com/gleam-lang/gleam.vim " Last Change: 2025 Apr 21 +" 2026 Feb 13 by Vim Project (remove 'formatprg' #19108) if exists('b:did_ftplugin') finish @@ -12,9 +13,8 @@ let b:did_ftplugin = 1 setlocal comments=:////,:///,:// setlocal commentstring=//\ %s -setlocal formatprg=gleam\ format\ --stdin setlocal suffixesadd=.gleam -let b:undo_ftplugin = "setlocal com< cms< fp< sua<" +let b:undo_ftplugin = "setlocal com< cms< sua<" if get(g:, "gleam_recommended_style", 1) setlocal expandtab diff --git a/runtime/ftplugin/go.vim b/runtime/ftplugin/go.vim index 13291af9..6559ad10 100644 --- a/runtime/ftplugin/go.vim +++ b/runtime/ftplugin/go.vim @@ -8,6 +8,7 @@ " 2025 Apr 16 by Vim Project (set 'cpoptions' for line continuation, #17121) " 2025 Jul 02 by Vim Project (add section movement mappings #17641) " 2025 Jul 05 by Vim Project (update b:undo_ftplugin #17664) +" 2026 Feb 13 by Vim Project (remove formatprg #19108) if exists('b:did_ftplugin') finish @@ -18,7 +19,6 @@ let s:cpo_save = &cpo set cpo&vim setlocal formatoptions-=t -setlocal formatprg=gofmt setlocal comments=s1:/*,mb:*,ex:*/,:// setlocal commentstring=//\ %s @@ -26,7 +26,7 @@ setlocal keywordprg=:GoKeywordPrg command! -buffer -nargs=* GoKeywordPrg call s:GoKeywordPrg() -let b:undo_ftplugin = 'setl fo< com< cms< fp< kp<' +let b:undo_ftplugin = 'setl fo< com< cms< kp<' \ . '| delcommand -buffer GoKeywordPrg' if get(g:, 'go_recommended_style', 1) diff --git a/runtime/ftplugin/hare.vim b/runtime/ftplugin/hare.vim index eca1a788..ebd7fbdc 100644 --- a/runtime/ftplugin/hare.vim +++ b/runtime/ftplugin/hare.vim @@ -1,10 +1,10 @@ vim9script # Vim filetype plugin. -# Language: Hare -# Maintainer: Amelia Clarke -# Last Updated: 2025 Sep 06 -# Upstream: https://git.sr.ht/~sircmpwn/hare.vim +# Language: Hare +# Maintainer: Amelia Clarke +# Last Change: 2026 Jan 24 +# Upstream: https://git.sr.ht/~sircmpwn/hare.vim if exists('b:did_ftplugin') finish @@ -18,22 +18,21 @@ b:undo_ftplugin = 'compiler make' # Formatting settings. setlocal comments=:// setlocal commentstring=//\ %s -setlocal formatlistpat=^\\s*-\ +setlocal formatlistpat=^\\s*-\\s\\+ setlocal formatoptions+=croqnlj/ formatoptions-=t b:undo_ftplugin ..= ' | setl cms< com< flp< fo<' # Locate Hare modules. &l:include = '\v^\s*use\s+%(\h\w*\s*\=)?' -setlocal includeexpr=hare#IncludeExpr() +&l:includeexpr = 'trim(v:fname, ":", 2)->substitute("::", "/", "g")' setlocal isfname+=: &l:path = ',,' .. hare#GetPath() -setlocal suffixesadd=.ha -b:undo_ftplugin ..= ' | setl inc< inex< isf< pa< sua<' +b:undo_ftplugin ..= ' | setl inc< inex< isf< pa<' # Follow the official style guide by default. if get(g:, 'hare_recommended_style', 1) setlocal noexpandtab - setlocal shiftwidth=0 + setlocal shiftwidth=8 setlocal softtabstop=0 setlocal tabstop=8 setlocal textwidth=80 diff --git a/runtime/ftplugin/haredoc.vim b/runtime/ftplugin/haredoc.vim index ca66b066..04cabfb4 100644 --- a/runtime/ftplugin/haredoc.vim +++ b/runtime/ftplugin/haredoc.vim @@ -1,10 +1,10 @@ vim9script # Vim filetype plugin. -# Language: Haredoc (Hare documentation format) -# Maintainer: Amelia Clarke -# Last Updated: 2025 Sep 06 -# Upstream: https://git.sr.ht/~sircmpwn/hare.vim +# Language: Haredoc (Hare documentation format) +# Maintainer: Amelia Clarke +# Last Change: 2026 Jan 24 +# Upstream: https://git.sr.ht/~sircmpwn/hare.vim if exists('b:did_ftplugin') finish @@ -18,21 +18,20 @@ b:undo_ftplugin = 'compiler make' # Formatting settings. setlocal comments=:\ setlocal commentstring=\ %s -setlocal formatlistpat=^-\ +setlocal formatlistpat=^\\s*-\\s\\+ setlocal formatoptions+=tnlj formatoptions-=c formatoptions-=q b:undo_ftplugin ..= ' | setl cms< com< flp< fo<' # Locate Hare modules. -setlocal includeexpr=hare#IncludeExpr() +&l:includeexpr = 'trim(v:fname, ":", 2)->substitute("::", "/", "g")' setlocal isfname+=: &l:path = ',,' .. hare#GetPath() -setlocal suffixesadd=.ha -b:undo_ftplugin ..= ' | setl inex< isf< pa< sua<' +b:undo_ftplugin ..= ' | setl inex< isf< pa<' # Follow the official style guide by default. if get(g:, 'hare_recommended_style', 1) setlocal noexpandtab - setlocal shiftwidth=0 + setlocal shiftwidth=8 setlocal softtabstop=0 setlocal tabstop=8 setlocal textwidth=80 diff --git a/runtime/ftplugin/haskell.vim b/runtime/ftplugin/haskell.vim index dbb1156f..5953e03d 100644 --- a/runtime/ftplugin/haskell.vim +++ b/runtime/ftplugin/haskell.vim @@ -4,6 +4,7 @@ " Previous Maintainer: Nikolai Weibull " Latest Revision: 2018-08-27 " 2025 Jul 09 by Vim Project revert setting iskeyword #8191 +" 2026 Jan 18 by Vim Project add include-search and define support #19143 if exists("b:did_ftplugin") finish @@ -13,11 +14,19 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim -let b:undo_ftplugin = "setl com< cms< fo<" +let b:undo_ftplugin = "setl com< cms< fo< su< sua< inex< inc< def<" setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s setlocal formatoptions-=t formatoptions+=croql setlocal omnifunc=haskellcomplete#Complete +setlocal suffixes+=.hi +setlocal suffixesadd=.hs,.lhs,.hsc + +setlocal includeexpr=findfile(tr(v:fname,'.','/'),'.;') +setlocal include=^import\\>\\%(\\s\\+safe\\>\\)\\?\\%(\\s\\+qualified\\>\\)\\? + +setlocal define=^\\%(data\\>\\\|class\\>\\%(.*=>\\)\\?\\\|\\%(new\\)\\?type\\>\\\|\\ze\\k\\+\\s*\\%(::\\\|=\\)\\) + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/hog.vim b/runtime/ftplugin/hog.vim index 4ee0a9f9..61714f2d 100644 --- a/runtime/ftplugin/hog.vim +++ b/runtime/ftplugin/hog.vim @@ -2,13 +2,14 @@ " Language: hog (snort.conf) " Maintainer: . Victor Roemer, . " Last Change: Mar 1, 2013 +" 2025 Dec 03 by Vim Project: set undo_ftplugin correctly #18727 if exists("b:did_ftplugin") finish endif let b:did_ftplugin = 1 -let s:undo_ftplugin = "setl fo< com< cms< def< inc<" +let b:undo_ftplugin = "setl fo< com< cms< def< inc<" let s:cpo_save = &cpo set cpo&vim @@ -19,8 +20,8 @@ setlocal commentstring=\c#\ %s setlocal define=\c^\s\{-}var setlocal include=\c^\s\{-}include -" Move around configurations -let s:hog_keyword_match = '\c^\s*\<\(preprocessor\\|config\\|output\\|include\\|ipvar\\|portvar\\|var\\|dynamicpreprocessor\\|' . +" Move around configurations +let s:hog_keyword_match = '\c^\s*\<\(preprocessor\\|config\\|output\\|include\\|ipvar\\|portvar\\|var\\|dynamicpreprocessor\\|' . \ 'dynamicengine\\|dynamicdetection\\|activate\\|alert\\|drop\\|block\\|dynamic\\|log\\|pass\\|reject\\|sdrop\\|sblock\)\>' exec "nnoremap ]] :call search('" . s:hog_keyword_match . "', 'W' )" @@ -28,9 +29,9 @@ exec "nnoremap [[ :call search('" . s:hog_keyword_match . "', ' if exists("loaded_matchit") let b:match_words = - \ '^\s*\<\%(preprocessor\|config\|output\|include\|ipvar\|portvar' . - \ '\|var\|dynamicpreprocessor\|dynamicengine\|dynamicdetection' . - \ '\|activate\|alert\|drop\|block\|dynamic\|log\|pass\|reject' . + \ '^\s*\<\%(preprocessor\|config\|output\|include\|ipvar\|portvar' . + \ '\|var\|dynamicpreprocessor\|dynamicengine\|dynamicdetection' . + \ '\|activate\|alert\|drop\|block\|dynamic\|log\|pass\|reject' . \ '\|sdrop\|sblock\>\):$,\::\,:;' let b:match_skip = 'r:\\.\{-}$\|^\s*#.\{-}$\|^\s*$' endif diff --git a/runtime/ftplugin/julia.vim b/runtime/ftplugin/julia.vim index b65cf997..df687f53 100644 --- a/runtime/ftplugin/julia.vim +++ b/runtime/ftplugin/julia.vim @@ -3,7 +3,7 @@ " Maintainer: Carlo Baldassi " Homepage: https://github.com/JuliaEditorSupport/julia-vim " Last Change: 2021 Aug 04 -" adapted from upstream 2021 Aug 4 +" 2026 Feb 27 sync with upstream repo if exists("b:did_ftplugin") finish @@ -11,7 +11,7 @@ endif let b:did_ftplugin = 1 let s:save_cpo = &cpo -set cpo-=C +set cpo&vim setlocal include=^\\s*\\%(reload\\\|include\\)\\> setlocal suffixesadd=.jl @@ -24,7 +24,7 @@ setlocal fo-=t fo+=croql let b:julia_vim_loaded = 1 let b:undo_ftplugin = "setlocal include< suffixesadd< comments< commentstring<" - \ . " define< fo< shiftwidth< expandtab< indentexpr< indentkeys< cinoptions< completefunc<" + \ . " define< fo< cinoptions< completefunc<" \ . " | unlet! b:julia_vim_loaded" " MatchIt plugin support @@ -68,7 +68,7 @@ if exists("loaded_matchit") elseif attr == 'juliaBlKeyword' return b:julia_begin_keywordsm . ':' . b:julia_end_keywords elseif attr == 'juliaException' - return b:julia_begin_keywordsm . ':\<\%(catch\|finally\)\>:' . b:julia_end_keywords + return b:julia_begin_keywordsm . ':\<\%(catch\|else\|finally\)\>:' . b:julia_end_keywords endif return '\<\>:\<\>' endfunction diff --git a/runtime/ftplugin/kitty.vim b/runtime/ftplugin/kitty.vim new file mode 100644 index 00000000..c15e5e0b --- /dev/null +++ b/runtime/ftplugin/kitty.vim @@ -0,0 +1,13 @@ +" Vim filetype plugin +" Language: kitty +" Maintainer: Arvin Verain +" Last Change: 2026 Jan 22 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setl comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=rol + +let b:undo_ftplugin = 'setl com< cms< fo<' diff --git a/runtime/ftplugin/leex.vim b/runtime/ftplugin/leex.vim new file mode 100644 index 00000000..1d5ce06f --- /dev/null +++ b/runtime/ftplugin/leex.vim @@ -0,0 +1,14 @@ +" Vim ftplugin file +" Language: Leex (Erlang Lexical Analyzer Generator) +" Maintainer: Jon Parise +" Last Change: 2025 Nov 29 +" Filenames: *.xrl +" +" References: +" - https://www.erlang.org/doc/apps/parsetools/leex.html + +if exists('b:did_ftplugin') + finish +endif + +runtime! ftplugin/erlang.vim diff --git a/runtime/ftplugin/lf.vim b/runtime/ftplugin/lf.vim index 7cec1119..09c3637a 100644 --- a/runtime/ftplugin/lf.vim +++ b/runtime/ftplugin/lf.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file " Language: lf file manager configuration file (lfrc) -" Maintainer: Andis Sprinkis +" Maintainer: Andis Sprinkis , @CatsDeservePets " URL: https://github.com/andis-sprinkis/lf-vim " Last Change: 6 Apr 2025 diff --git a/runtime/ftplugin/logtalk.dict b/runtime/ftplugin/logtalk.dict index 0d076b7b..386cf1f2 100644 --- a/runtime/ftplugin/logtalk.dict +++ b/runtime/ftplugin/logtalk.dict @@ -72,6 +72,7 @@ deprecated discontiguous div domain_error +consistency_error duplicated_directives dynamic dynamic_declarations @@ -144,6 +145,7 @@ min missing_directives mod mode +mode_non_terminal modules multifile nl diff --git a/runtime/ftplugin/mf.vim b/runtime/ftplugin/mf.vim index 7e7dfa7d..3b9cc415 100644 --- a/runtime/ftplugin/mf.vim +++ b/runtime/ftplugin/mf.vim @@ -4,8 +4,7 @@ vim9script # Language: METAFONT # Maintainer: Nicola Vitacolonna # Former Maintainers: Nikolai Weibull -# Latest Revision: 2022 Aug 12 -# 2024 Jan 14 by Vim Project (browsefilter) +# Latest Revision: 2026 Jan 10 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/mp.vim b/runtime/ftplugin/mp.vim index 87ad9f8d..06e83144 100644 --- a/runtime/ftplugin/mp.vim +++ b/runtime/ftplugin/mp.vim @@ -4,8 +4,7 @@ vim9script # Language: MetaPost # Maintainer: Nicola Vitacolonna # Former Maintainers: Nikolai Weibull -# Latest Revision: 2022 Aug 12 -# 2024 Jan 14 by Vim Project (browsefilter) +# Latest Revision: 2026 Jan 10 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/nickel.vim b/runtime/ftplugin/nickel.vim new file mode 100644 index 00000000..fbe44c2e --- /dev/null +++ b/runtime/ftplugin/nickel.vim @@ -0,0 +1,13 @@ +" Vim filetype plugin +" Language: nickel +" Maintainer: Riley Bruins +" Last Change: 2026 Mar 01 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setl comments=:# commentstring=#\ %s + +let b:undo_ftplugin = 'setl com< cms<' diff --git a/runtime/ftplugin/perl.vim b/runtime/ftplugin/perl.vim index 03368a7a..f2d39161 100644 --- a/runtime/ftplugin/perl.vim +++ b/runtime/ftplugin/perl.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file " Language: Perl -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues " License: Vim License (see :help license) diff --git a/runtime/ftplugin/plsql.vim b/runtime/ftplugin/plsql.vim old mode 100755 new mode 100644 diff --git a/runtime/ftplugin/pod.vim b/runtime/ftplugin/pod.vim index 81b0011b..5431fb99 100644 --- a/runtime/ftplugin/pod.vim +++ b/runtime/ftplugin/pod.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file " Language: Perl POD format -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Author: Doug Kearns " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues diff --git a/runtime/ftplugin/quarto.vim b/runtime/ftplugin/quarto.vim index a76bcc2c..f8b27a1a 100644 --- a/runtime/ftplugin/quarto.vim +++ b/runtime/ftplugin/quarto.vim @@ -1 +1,5 @@ +if exists("b:did_ftplugin") + finish +endif + runtime ftplugin/rmd.vim diff --git a/runtime/ftplugin/raku.vim b/runtime/ftplugin/raku.vim index f57427e3..4eb2619f 100644 --- a/runtime/ftplugin/raku.vim +++ b/runtime/ftplugin/raku.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file " Language: Raku -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Homepage: https://github.com/Raku/vim-raku " Bugs/requests: https://github.com/Raku/vim-raku/issues " Last Change: 2021 Apr 16 diff --git a/runtime/ftplugin/rst.vim b/runtime/ftplugin/rst.vim index 887f64bb..1d31462d 100644 --- a/runtime/ftplugin/rst.vim +++ b/runtime/ftplugin/rst.vim @@ -5,6 +5,7 @@ " Website: https://github.com/marshallward/vim-restructuredtext " Latest Revision: 2020-03-31 " 2025 Oct 13 by Vim project: update b:undo_ftplugin #18566 +" 2026 Jan 11 by Vim project: set suffixesadd #19149 if exists("b:did_ftplugin") finish @@ -19,10 +20,11 @@ if !exists('g:rst_fold_enabled') let g:rst_fold_enabled = 0 endif -let b:undo_ftplugin = "setlocal comments< commentstring< expandtab< formatoptions<" +let b:undo_ftplugin = "setlocal comments< commentstring< expandtab< formatoptions< suffixesadd<" setlocal comments=fb:.. commentstring=..\ %s expandtab setlocal formatoptions+=tcroql +setlocal suffixesadd=.rst " reStructuredText standard recommends that tabs be expanded to 8 spaces " The choice of 3-space indentation is to provide slightly better support for diff --git a/runtime/ftplugin/rust.vim b/runtime/ftplugin/rust.vim index 3e2741f9..4765f817 100644 --- a/runtime/ftplugin/rust.vim +++ b/runtime/ftplugin/rust.vim @@ -3,6 +3,7 @@ " Maintainer: Chris Morgan " Last Change: 2024 Mar 17 " 2024 May 23 by Riley Bruins " Latest Revision: 2025 Feb 20 +" 2026 Jan 09 by Vim Project: preserve line endings for existing files #19144 if exists("b:did_ftplugin") finish @@ -16,4 +17,7 @@ setlocal formatoptions-=t formatoptions+=croql " https://datatracker.ietf.org/doc/html/rfc5228#section-2.2 says " "newlines (CRLF, never just CR or LF)" -setlocal fileformat=dos +" Use CRLF for new files only; preserve existing line endings +if expand('%:p') !=# '' && !filereadable(expand('%:p')) + setlocal fileformat=dos +endif diff --git a/runtime/ftplugin/skhd.vim b/runtime/ftplugin/skhd.vim new file mode 100644 index 00000000..ecc932f5 --- /dev/null +++ b/runtime/ftplugin/skhd.vim @@ -0,0 +1,20 @@ +" Vim filetype plugin file +" Language: skhd(simple hotkey daemon for macOS) configuration file +" Maintainer: Kiyoon Kim +" Last Change: 2026 Jan 23 + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=:# commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let b:undo_ftplugin = "setl com< cms< fo<" + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/ftplugin/sml.vim b/runtime/ftplugin/sml.vim new file mode 100644 index 00000000..328d9eea --- /dev/null +++ b/runtime/ftplugin/sml.vim @@ -0,0 +1,41 @@ +" Vim filetype plugin file +" Language: SML +" Filenames: *.sml *.sig +" Maintainer: tocariimaa +" Last Change: 2025 Nov 04 +" 2026 Jan 19 by Vim Project: add 'include' setting + +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<' + +setlocal formatoptions+=croql formatoptions-=t +setlocal commentstring=(*\ %s\ *) +setlocal comments=sr:(*,mb:*,ex:*) +setlocal include=^\\s*use\\> + +if exists('loaded_matchit') + let b:match_ignorecase = 0 + let b:match_words = '\<\%(abstype\|let\|local\|sig\|struct\)\>:\<\%(in\|with\)\>:\' + let b:undo_ftplugin ..= ' | unlet! b:match_ignorecase b:match_words' +endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") + let b:browsefilter = "SML Source Files (*.sml)\t*.sml\n" .. + \ "SML Signature Files (*.sig)\t*.sig\n" + if has("win32") + let b:browsefilter ..= "All Files (*.*)\t*\n" + else + let b:browsefilter ..= "All Files (*)\t*\n" + endif + let b:undo_ftplugin ..= " | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/ftplugin/sshconfig.vim b/runtime/ftplugin/sshconfig.vim index 8a7b0783..a7f49e02 100644 --- a/runtime/ftplugin/sshconfig.vim +++ b/runtime/ftplugin/sshconfig.vim @@ -2,7 +2,7 @@ " Language: OpenSSH client configuration file " Maintainer: This runtime file is looking for a new maintainer. " Previous Maintainer: Nikolai Weibull -" Latest Revision: 2025-07-22 (use :hor term #17822) +" Latest Revision: 2026-03-11 (`less -I`) if exists("b:did_ftplugin") finish @@ -17,7 +17,7 @@ let b:undo_ftplugin = 'setlocal com< cms< fo<' if has('unix') && executable('less') && exists(':terminal') == 2 command -buffer -nargs=1 SshconfigKeywordPrg - \ silent exe 'hor term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('^\s+' . . '$', '\') . ''' --hilite-search" man ' . 'ssh_config' + \ silent exe 'hor term ' . 'env LESS= MANPAGER="less -I --pattern=''' . escape('^\s+' . . '$', '\') . ''' --hilite-search" man ' . 'ssh_config' setlocal iskeyword+=- setlocal keywordprg=:SshconfigKeywordPrg let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer SshconfigKeywordPrg' diff --git a/runtime/ftplugin/sudoers.vim b/runtime/ftplugin/sudoers.vim index 32c08b19..674bc8a9 100644 --- a/runtime/ftplugin/sudoers.vim +++ b/runtime/ftplugin/sudoers.vim @@ -19,9 +19,8 @@ setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql if has('unix') && executable('less') && exists(':terminal') == 2 command -buffer -nargs=1 SudoersKeywordPrg \ silent exe ':hor term ' . 'env LESS= MANPAGER="less --pattern=''' . escape('\b' . . '\b', '\') . ''' --hilite-search" man ' . 'sudoers' - setlocal iskeyword+=- setlocal keywordprg=:SudoersKeywordPrg - let b:undo_ftplugin .= '| setlocal keywordprg< iskeyword< | sil! delc -buffer SudoersKeywordPrg' + let b:undo_ftplugin .= '| setlocal keywordprg< | sil! delc -buffer SudoersKeywordPrg' endif let &cpo = s:cpo_save diff --git a/runtime/ftplugin/systemverilog.vim b/runtime/ftplugin/systemverilog.vim index 38ed1ad3..145e1154 100644 --- a/runtime/ftplugin/systemverilog.vim +++ b/runtime/ftplugin/systemverilog.vim @@ -2,6 +2,7 @@ " Language: SystemVerilog " Maintainer: kocha " Last Change: 07-May-2021 +" 2026 Feb 13 by Vim project: correct matchit covergroup block #19394 if exists("b:did_ftplugin") finish @@ -32,7 +33,7 @@ if exists("loaded_matchit") \ '\:\,' . \ '\:\,' . \ '\:\,' . - \ '\:\,' . + \ '\:\,' . \ '\:\,' . \ '\:\,' . \ '\:\,' . diff --git a/runtime/ftplugin/tap.vim b/runtime/ftplugin/tap.vim index c165c0ce..9f656f74 100644 --- a/runtime/ftplugin/tap.vim +++ b/runtime/ftplugin/tap.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file " Language: Verbose TAP Output -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues " License: Vim License (see :help license) diff --git a/runtime/ftplugin/toml.vim b/runtime/ftplugin/toml.vim index 6bd79b1c..6565a762 100644 --- a/runtime/ftplugin/toml.vim +++ b/runtime/ftplugin/toml.vim @@ -3,7 +3,7 @@ " Homepage: https://github.com/cespare/vim-toml " Maintainer: Aman Verma " Author: Lily Ballard -" Last Change: Sep 21, 2021 +" Last Change: May 5, 2025 if exists('b:did_ftplugin') finish @@ -12,10 +12,11 @@ let b:did_ftplugin = 1 let s:save_cpo = &cpo set cpo&vim -let b:undo_ftplugin = 'setlocal commentstring< comments<' +let b:undo_ftplugin = 'setlocal commentstring< comments< iskeyword<' setlocal commentstring=#\ %s setlocal comments=:# +setlocal iskeyword+=- let &cpo = s:save_cpo unlet s:save_cpo diff --git a/runtime/ftplugin/tt2html.vim b/runtime/ftplugin/tt2html.vim index 0407dbba..195a232e 100644 --- a/runtime/ftplugin/tt2html.vim +++ b/runtime/ftplugin/tt2html.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file " Language: TT2 embedded with HTML -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues " License: Vim License (see :help license) diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim index 00b4332f..72a87d18 100644 --- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -11,6 +11,8 @@ " 2025 Aug 08 by Vim Project (add Vim script complete function #17871) " 2025 Aug 12 by Vim Project (improve vimgoto script #17970)) " 2025 Aug 16 by Vim Project set com depending on Vim9 or legacy script +" 2026 Jan 26 by Vim Project set path to common Vim directories #19219 +" 2026 Feb 03 by Vim Project update s:Help to improve detecting functions #19320 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -25,7 +27,7 @@ set cpo&vim if !exists('*VimFtpluginUndo') func VimFtpluginUndo() - setl fo< isk< com< tw< commentstring< include< define< keywordprg< omnifunc< + setl fo< isk< com< tw< commentstring< include< define< keywordprg< omnifunc< path< sil! delc -buffer VimKeywordPrg if exists('b:did_add_maps') silent! nunmap [[ @@ -88,7 +90,9 @@ if !exists("*" .. expand("") .. "Help") endif endif - if pre =~# '^\s*:\=$' || pre =~# '\%(\\\||\)\@ +" Last Change: 2026 Mar 01 + +if exists('b:did_ftplugin') + finish +endif +let b:did_ftplugin = 1 + +setl comments=:// +setl commentstring=//\ %s + +let b:undo_ftplugin = 'setl com< cms<' diff --git a/runtime/ftplugin/xml.vim b/runtime/ftplugin/xml.vim index 83c528ef..6256d171 100644 --- a/runtime/ftplugin/xml.vim +++ b/runtime/ftplugin/xml.vim @@ -1,12 +1,11 @@ " Vim filetype plugin file " Language: xml " Maintainer: Christian Brabandt -" Last Changed: Dec 07th, 2018 -" 2024 Jan 14 by Vim Project (browsefilter) -" 2024 May 23 by Riley Bruins ('commentstring') -" Repository: https://github.com/chrisbra/vim-xml-ftplugin -" Previous Maintainer: Dan Sharp -" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin +" Last Changed: 2024 May 24 +" Repository: https://github.com/chrisbra/vim-xml-ftplugin +" Previously +" Maintainer: Dan Sharp +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 @@ -54,12 +53,8 @@ command! -nargs=? XMLent call xmlcomplete#CreateEntConnection() if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter="XML Files (*.xml)\t*.xml\n" . \ "DTD Files (*.dtd)\t*.dtd\n" . - \ "XSD Files (*.xsd)\t*.xsd\n" - if has("win32") - let b:browsefilter .= "All Files (*.*)\t*\n" - else - let b:browsefilter .= "All Files (*)\t*\n" - endif + \ "XSD Files (*.xsd)\t*.xsd\n" . + \ "All Files (*.*)\t*.*\n" endif " Undo the stuff we changed. diff --git a/runtime/ftplugin/xs.vim b/runtime/ftplugin/xs.vim index 206fbc27..d51c4112 100644 --- a/runtime/ftplugin/xs.vim +++ b/runtime/ftplugin/xs.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file " Language: XS (Perl extension interface language) -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues " License: Vim License (see :help license) diff --git a/runtime/ftplugin/yara.vim b/runtime/ftplugin/yara.vim new file mode 100644 index 00000000..65ac3965 --- /dev/null +++ b/runtime/ftplugin/yara.vim @@ -0,0 +1,22 @@ +" Vim filetype plugin file +" Language: YARA +" Maintainer: The Vim Project +" Last Change: 2026 Mar 17 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting or using "o". +setlocal formatoptions-=t formatoptions+=croql + +setlocal commentstring=//\ %s +setlocal comments=s1:/*,mb:*,ex:*/,:// + +" Undo settings when leaving buffer +let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions<" diff --git a/runtime/ftplugin/zsh.vim b/runtime/ftplugin/zsh.vim index 65e9f377..850bef05 100644 --- a/runtime/ftplugin/zsh.vim +++ b/runtime/ftplugin/zsh.vim @@ -2,11 +2,9 @@ " Language: Zsh shell script " Maintainer: Christian Brabandt " Previous Maintainer: Nikolai Weibull -" Latest Revision: 2024 Sep 19 +" Latest Revision: 2025 Jul 23 " License: Vim (see :h license) " Repository: https://github.com/chrisbra/vim-zsh -" Last Change: -" 2025 Jul 23 by Vim Project (use :hor term #17822) if exists("b:did_ftplugin") finish @@ -20,9 +18,14 @@ setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql let b:undo_ftplugin = "setl com< cms< fo< " +if get(g:, 'zsh_fold_enable', 0) + setlocal foldmethod=syntax + let b:undo_ftplugin .= "fdm< " +endif + if executable('zsh') && &shell !~# '/\%(nologin\|false\)$' if exists(':terminal') == 2 - command! -buffer -nargs=1 ZshKeywordPrg silent exe ':hor term zsh -c "autoload -Uz run-help; run-help "' + command! -buffer -nargs=1 ZshKeywordPrg silent exe ':hor :term zsh -c "autoload -Uz run-help; run-help "' else command! -buffer -nargs=1 ZshKeywordPrg echo system('MANPAGER= zsh -c "autoload -Uz run-help; run-help 2>/dev/null"') endif diff --git a/runtime/gvim.desktop b/runtime/gvim.desktop index a970578e..6ca70897 100644 --- a/runtime/gvim.desktop +++ b/runtime/gvim.desktop @@ -28,6 +28,7 @@ GenericName[it]=Editor di testi GenericName[ja]=テキストエディタ GenericName[ru]=Текстовый редактор GenericName[sr]=Едитор текст +GenericName[sv]=Textredigerare GenericName[tr]=Metin Düzenleyici GenericName[uk]=Редактор Тексту GenericName[zh_CN]=文本编辑器 @@ -124,9 +125,10 @@ Keywords[it]=Testo;editor; Keywords[ja]=テキスト;エディタ; Keywords[ru]=текст;текстовый редактор; Keywords[sr]=Текст;едитор; +Keywords[sv]=Text;Redigerare; Keywords[tr]=Metin;düzenleyici; Keywords[uk]=текст;редактор; -Keywords[zh_CN]=Text;editor;文本;编辑器; +Keywords[zh_CN]=文本;编辑器; Keywords=Text;editor; # Translators: This is the Icon file name. Do NOT translate Icon=gvim diff --git a/runtime/indent/bpftrace.vim b/runtime/indent/bpftrace.vim new file mode 100644 index 00000000..f0054977 --- /dev/null +++ b/runtime/indent/bpftrace.vim @@ -0,0 +1,19 @@ +" Vim indent file +" Language: bpftrace +" Author: Stanislaw Gruszka +" Last Change: 2025 Dec 27 + +" Only load this indent file when no other was loaded. +if exists("b:did_indent") + finish +endif +let b:did_indent = 1 + +setlocal noautoindent nosmartindent + +setlocal cindent +setlocal cinoptions=+0,(0,[0,Ws,J1,j1,m1,>s +setlocal cinkeys=0{,0},!^F,o,O,#0 +setlocal cinwords= + +let b:undo_indent = "setlocal autoindent< smartindent< cindent< cinoptions< cinkeys< cinwords<" diff --git a/runtime/indent/context.vim b/runtime/indent/context.vim index 9656151e..b1dc36c3 100644 --- a/runtime/indent/context.vim +++ b/runtime/indent/context.vim @@ -3,7 +3,7 @@ vim9script # Language: ConTeXt typesetting engine # Maintainer: Nicola Vitacolonna # Former Maintainers: Nikolai Weibull -# Latest Revision: 2023 Dec 26 +# Latest Revision: 2026 Jan 10 if exists("b:did_indent") finish @@ -39,10 +39,10 @@ def ConTeXtIndent(): number return g:MetaPostIndent() endif - const prevlnum = PrevNotComment(v:lnum - 1) - const prevind = indent(prevlnum) - const prevline = getline(prevlnum) - const currline = getline(v:lnum) + var prevlnum = PrevNotComment(v:lnum - 1) + var prevind = indent(prevlnum) + var prevline = getline(prevlnum) + var currline = getline(v:lnum) # If the current line starts with ], match indentation. if currline =~# '^\s*\]' diff --git a/runtime/indent/eruby.vim b/runtime/indent/eruby.vim index 6ff15ab9..2caa152c 100644 --- a/runtime/indent/eruby.vim +++ b/runtime/indent/eruby.vim @@ -2,7 +2,6 @@ " Language: eRuby " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2019 Jan 06 if exists("b:did_indent") diff --git a/runtime/indent/handlebars.vim b/runtime/indent/handlebars.vim new file mode 100644 index 00000000..6b76b5a3 --- /dev/null +++ b/runtime/indent/handlebars.vim @@ -0,0 +1,128 @@ +" Vim indent file +" Language: Handlebars +" Maintainer: Devin Weaver +" Last Change: 2026 Feb 20 +" Origin: https://github.com/joukevandermaas/vim-ember-hbs +" Credits: Jouke van der Maas +" Acknowledgement: Based on eruby.vim indentation by TPope +" License: MIT +" The MIT License (MIT) +" +" Copyright (c) 2026 Devin Weaver +" Copyright (c) 2015 Jouke van der Maas +" +" Permission is hereby granted, free of charge, to any person obtaining a copy +" of this software and associated documentation files (the "Software"), to deal +" in the Software without restriction, including without limitation the rights +" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +" copies of the Software, and to permit persons to whom the Software is +" furnished to do so, subject to the following conditions: +" +" The above copyright notice and this permission notice shall be included in all +" copies or substantial portions of the Software. +" +" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +" SOFTWARE. + +if exists("b:did_indent") + finish +endif + +runtime! indent/html.vim +unlet! b:did_indent + +" Force HTML indent to not keep state. +let b:html_indent_usestate = 0 +let b:handlebars_current_indent = 0 + +if &l:indentexpr == '' + if &l:cindent + let &l:indentexpr = 'cindent(v:lnum)' + else + let &l:indentexpr = 'indent(prevnonblank(v:lnum-1))' + endif +endif +let b:handlebars_subtype_indentexpr = &l:indentexpr + +let b:did_indent = 1 + +setlocal indentexpr=GetHandlebarsIndent() +setlocal indentkeys=o,O,*,<>>,{,},0),0],o,O,!^F,=else,={{#,={{/ + +" Only define the function once. +if exists("*GetHandlebarsIndent") + finish +endif + +function! GetHandlebarsIndent(...) + " The value of a single shift-width + let sw = shiftwidth() + + if a:0 && a:1 == '.' + let v:lnum = line('.') + elseif a:0 && a:1 =~ '^\d' + let v:lnum = a:1 + endif + let vcol = col('.') + call cursor(v:lnum,1) + call cursor(v:lnum,vcol) + exe "let ind = ".b:handlebars_subtype_indentexpr + + " Workaround for Andy Wokula's HTML indent. This should be removed after + " some time, since the newest version is fixed in a different way. Credit + " to eruby.vim indent by tpope + if b:handlebars_subtype_indentexpr =~# '^HtmlIndent(' + \ && exists('b:indent') + \ && type(b:indent) == type({}) + \ && has_key(b:indent, 'lnum') + " Force HTML indent to not keep state + let b:indent.lnum = -1 + endif + + let lnum = prevnonblank(v:lnum-1) + let prevLine = getline(lnum) + let currentLine = getline(v:lnum) + + " all indent rules only apply if the block opening/closing + " tag is on a separate line + + " indent after block {{#block + if prevLine =~# '\v\s*\{\{\#' + let ind = ind + sw + endif + " but not if the block ends on the same line + if prevLine =~# '\v\s*\{\{\#(.+)(\s+|\}\}).+\{\{\/\1' + let ind = ind - sw + endif + " unindent after block close {{/block}} + if currentLine =~# '\v^\s*\{\{\/' + let ind = ind - sw + endif + " indent after component block {{a-component + if prevLine =~# '\v\s*\{\{\w' + let ind = ind + sw + endif + " but not if the component block ends on the same line + if prevLine =~# '\v\s*\{\{\w(.+)\}\}' + let ind = ind - sw + endif + " unindent }} lines + if currentLine =~# '\v^\s*\}\}\s*$' || (currentLine !~# '\v^\s*\{\{\/' && prevLine =~# '\v^\s*[^\{\}]+\}\}\s*$') + let ind = ind - sw + endif + " unindent {{else}} + if currentLine =~# '\v^\s*\{\{else' + let ind = ind - sw + endif + " indent again after {{else}} + if prevLine =~# '\v^\s*\{\{else' + let ind = ind + sw + endif + + return ind +endfunction diff --git a/runtime/indent/hare.vim b/runtime/indent/hare.vim index 84496348..ff38f600 100644 --- a/runtime/indent/hare.vim +++ b/runtime/indent/hare.vim @@ -3,7 +3,7 @@ vim9script # Vim indent file. # Language: Hare # Maintainer: Amelia Clarke -# Last Change: 2025 Sep 06 +# Last Change: 2026 Jan 24 # Upstream: https://git.sr.ht/~sircmpwn/hare.vim if exists('b:did_indent') @@ -17,7 +17,7 @@ b:did_indent = 1 # +0 -> Don't indent continuation lines. # (s -> Indent one level inside parens. # u0 -> Don't indent additional levels inside nested parens. -# U1 -> Don't treat `(` any differently if it is at the start of a line. +# U1 -> Don't treat `(` any differently if it started a line. # m1 -> Indent lines starting with `)` the same as the matching `(`. # j1 -> Indent blocks one level inside parens. # J1 -> Indent structs and unions correctly. @@ -56,7 +56,11 @@ def GetHareIndent(): number # If the previous line started the block, use the same indent. if pline =~ '{$' - return pindent + if pline =~ '\v<%(match|switch)>[^(]*\(' + return pindent + endif + return pindent - GetValue('hare_indent_match_switch', 1, 1, 2) + * shiftwidth() endif # If the current line contains a `:` that is not part of `::`, use the diff --git a/runtime/indent/julia.vim b/runtime/indent/julia.vim index efc98a28..d01aa965 100644 --- a/runtime/indent/julia.vim +++ b/runtime/indent/julia.vim @@ -4,6 +4,7 @@ " Homepage: https://github.com/JuliaEditorSupport/julia-vim " Last Change: 2022 Jun 14 " 2023 Aug 28 by Vim Project (undo_indent) +" 2025 Dec 08 by Vim Project (update indent script from upstream #18894) " Notes: originally based on Bram Moolenaar's indent file for vim " Only load this indent file when no other was loaded. @@ -22,7 +23,7 @@ setlocal indentkeys-=0{ setlocal indentkeys-=0} setlocal nosmartindent -let b:undo_indent = "setl ai< inde< indk< si<" +let b:undo_indent = "setlocal autoindent< indentexpr< indentkeys< smartindent<" " Only define the function once. if exists("*GetJuliaIndent") @@ -96,7 +97,7 @@ function GetJuliaNestingStruct(lnum, ...) let i = JuliaMatch(a:lnum, line, '\', s) if i >= 0 && i == fb let s = i+1 - if len(blocks_stack) > 0 && blocks_stack[-1] =~# '\<\%(else\)\=if\>' + if len(blocks_stack) > 0 && blocks_stack[-1] =~# '\<\%(\%(else\)\=if\|catch\)\>' let blocks_stack[-1] = 'else' else call add(blocks_stack, 'else') @@ -114,7 +115,7 @@ function GetJuliaNestingStruct(lnum, ...) let i = JuliaMatch(a:lnum, line, '\', s) if i >= 0 && i == fb let s = i+1 - if len(blocks_stack) > 0 && blocks_stack[-1] == 'try' + if len(blocks_stack) > 0 && blocks_stack[-1] =~# '\<\%(try\|finally\)\>' let blocks_stack[-1] = 'catch' else call add(blocks_stack, 'catch') @@ -125,7 +126,7 @@ function GetJuliaNestingStruct(lnum, ...) let i = JuliaMatch(a:lnum, line, '\', s) if i >= 0 && i == fb let s = i+1 - if len(blocks_stack) > 0 && (blocks_stack[-1] == 'try' || blocks_stack[-1] == 'catch') + if len(blocks_stack) > 0 && blocks_stack[-1] =~# '\<\%(try\|catch\|else\)\>' let blocks_stack[-1] = 'finally' else call add(blocks_stack, 'finally') @@ -298,7 +299,7 @@ function IsInContinuationImportLine(lnum) if len(stack) == 0 return 0 endif - return JuliaMatch(a:lnum, getline(a:lnum), '\<\%(import\|using\|export\)\>', indent(a:lnum)) == -1 + return JuliaMatch(a:lnum, getline(a:lnum), '\<\%(import\|using\|export\|public\)\>', indent(a:lnum)) == -1 endfunction function IsFunctionArgPar(lnum, c) @@ -314,7 +315,7 @@ function JumpToMatch(lnum, last_closed_bracket) " otherwise resorts to vim's default, which is buggy but better than " nothing) call cursor(a:lnum, a:last_closed_bracket) - let percmap = maparg("%", "n") + let percmap = maparg("%", "n") if exists("g:loaded_matchit") && percmap =~# 'Match\%(it\|_wrapper\)' normal % else @@ -448,10 +449,10 @@ function GetJuliaIndent() " Decrease indentation for each closed block in the current line let ind -= shiftwidth() * num_closed_blocks - " Additional special case: multiline import/using/export statements + " Additional special case: multiline import/using/export/public statements let prevline = getline(lnum) - " Are we in a multiline import/using/export statement, right below the + " Are we in a multiline import/using/export/public statement, right below the " opening line? if IsInContinuationImportLine(v:lnum) && !IsInContinuationImportLine(lnum) if get(g:, 'julia_indent_align_import', 1) @@ -465,9 +466,9 @@ function GetJuliaIndent() return cind + 2 endif else - " if the opening line is not a naked import/using/export statement, use + " if the opening line is not a naked import/using/export/public statement, use " it as reference - let iind = JuliaMatch(lnum, prevline, '\', indent(lnum), lim) + let iind = JuliaMatch(lnum, prevline, '\', indent(lnum), lim) if iind >= 0 " assuming whitespace after using... so no `using(XYZ)` please! let nonwhiteind = JuliaMatch(lnum, prevline, '\S', iind+6, -1, 'basic') @@ -479,7 +480,7 @@ function GetJuliaIndent() endif let ind += shiftwidth() - " Or did we just close a multiline import/using/export statement? + " Or did we just close a multiline import/using/export/public statement? elseif !IsInContinuationImportLine(v:lnum) && IsInContinuationImportLine(lnum) " find the starting line of the statement let ilnum = 0 diff --git a/runtime/indent/lf.vim b/runtime/indent/lf.vim new file mode 100644 index 00000000..2d9b89d1 --- /dev/null +++ b/runtime/indent/lf.vim @@ -0,0 +1,10 @@ +" Vim indent file +" Language: lf file manager configuration file (lfrc) +" Maintainer: Andis Sprinkis , @CatsDeservePets +" URL: https://github.com/andis-sprinkis/lf-vim +" Last Change: 26 Oct 2025 + +if exists("b:did_indent") | finish | endif + +" Correctly indent embedded shell commands. +runtime! indent/sh.vim diff --git a/runtime/indent/mf.vim b/runtime/indent/mf.vim index 893323d7..c542403e 100644 --- a/runtime/indent/mf.vim +++ b/runtime/indent/mf.vim @@ -1,6 +1,10 @@ -" METAFONT indent file -" Language: METAFONT -" Maintainer: Nicola Vitacolonna -" Latest Revision: 2022 Aug 12 +vim9script + +# METAFONT indent file +# Language: METAFONT +# Maintainer: Nicola Vitacolonna +# Latest Revision: 2026 Jan 10 runtime! indent/mp.vim + +# vim: sw=2 fdm=marker diff --git a/runtime/indent/mp.vim b/runtime/indent/mp.vim index 07873e13..50e520b0 100644 --- a/runtime/indent/mp.vim +++ b/runtime/indent/mp.vim @@ -4,7 +4,7 @@ vim9script # Language: MetaPost # Maintainer: Nicola Vitacolonna # Former Maintainers: Eugene Minkovskii -# Latest Revision: 2022 Aug 12 +# Latest Revision: 2026 Jan 10 if exists("b:did_indent") finish diff --git a/runtime/indent/odin.vim b/runtime/indent/odin.vim index 50284f4c..f8e0d360 100644 --- a/runtime/indent/odin.vim +++ b/runtime/indent/odin.vim @@ -4,7 +4,7 @@ vim9script # Language: Odin # Maintainer: Maxim Kim # Website: https://github.com/habamax/vim-odin -# Last Change: 2025-10-15 +# Last Change: 2026-02-02 if exists("b:did_indent") finish @@ -61,7 +61,9 @@ def GetOdinIndent(lnum: number): number var indent = cindent(lnum) var line = getline(lnum) - if line =~ '^\s*#\k\+' + if line =~ '^\s*#+\k' + indent = pindent + elseif line =~ '^\s*#\k\+' if pline =~ '[{:]\s*$' indent = pindent + shiftwidth() else @@ -79,7 +81,7 @@ def GetOdinIndent(lnum: number): number endif elseif pline =~ '^\s*@.*' && line !~ '^\s*}' indent = pindent - elseif pline =~ ':[:=].*}\s*$' + elseif pline =~ ':[:=].*}\s*$' && line !~ '^\s*}' indent = pindent elseif pline =~ '^\s*}\s*$' if line !~ '^\s*}' && line !~ '\\s*.*:\s*$' diff --git a/runtime/indent/perl.vim b/runtime/indent/perl.vim index a97c34da..636d646d 100644 --- a/runtime/indent/perl.vim +++ b/runtime/indent/perl.vim @@ -1,6 +1,6 @@ " Vim indent file " Language: Perl -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues " License: Vim License (see :help license) diff --git a/runtime/indent/php.vim b/runtime/indent/php.vim index 377ffd5a..89d4afa0 100644 --- a/runtime/indent/php.vim +++ b/runtime/indent/php.vim @@ -1,10 +1,9 @@ -" Vim indent file " Language: PHP " Author: John Wellesz " URL: https://www.2072productions.com/vim/indent/php.vim " Home: https://github.com/2072/PHP-Indenting-for-VIm -" Last Change: 2023 August 18th -" Version: 1.75 +" Last Change: 2025 November 16th +" Version: 1.76 " " " Type :help php-indent for available options @@ -839,13 +838,15 @@ function! GetPhpIndent() continue else - let isSingleLineBlock = 0 - if getline(last_line_num) =~# '^\s*else\%(if\)\=\>' + if getline(last_line_num) =~# '^\s*else\%(if\)\=\>' && !isSingleLineBlock let last_line_num = FindTheIfOfAnElse(last_line_num, 0) + let isSingleLineBlock = 0 continue endif + let isSingleLineBlock = 0 + let last_match = last_line_num diff --git a/runtime/indent/raku.vim b/runtime/indent/raku.vim index 753a2b04..35922aae 100644 --- a/runtime/indent/raku.vim +++ b/runtime/indent/raku.vim @@ -1,6 +1,6 @@ " Vim indent file " Language: Perl 6 -" Maintainer: vim-perl +" Maintainer: vim-perl (need to be subscribed to post) " Homepage: https://github.com/vim-perl/vim-perl " Bugs/requests: https://github.com/vim-perl/vim-perl/issues " Last Change: 2020 Apr 15 diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim index ea5a2a74..74e02ab2 100644 --- a/runtime/indent/ruby.vim +++ b/runtime/indent/ruby.vim @@ -3,8 +3,7 @@ " Maintainer: Andrew Radev " Previous Maintainer: Nikolai Weibull " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns -" Last Change: 2022 Jun 30 +" Last Change: 2023 Dec 22 " 0. Initialization {{{1 " ================= @@ -93,7 +92,14 @@ let s:ruby_indent_keywords = \ '\<\%(if\|for\|while\|until\|case\|unless\|begin\):\@!\>' " Def without an end clause: def method_call(...) = -let s:ruby_endless_def = '\~!]\|' . + \ '\*\*\|>>\|<<\|' . + \ '===\?\|\!=\|=\~\|\!\~\|' . + \ '<=>\|<=\|>=\|' . + \ '[-+!\~]@\|\[\]' . + \ '\)\%((.*)\|\s\)\s*=' " Regex used for words that, at the start of a line, remove a level of indent. let s:ruby_deindent_keywords = diff --git a/runtime/indent/rust.vim b/runtime/indent/rust.vim index a96650d4..f449a19d 100644 --- a/runtime/indent/rust.vim +++ b/runtime/indent/rust.vim @@ -2,7 +2,10 @@ " Language: Rust " Author: Chris Morgan " Last Change: 2023-09-11 -" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values (#15138) +" 2024 Jul 04 by Vim Project: use shiftwidth() instead of hard-coding shifted values #15138 +" 2025 Dec 29 by Vim Project: clean up +" 2025 Dec 31 by Vim Project: correcly indent after nested array literal #19042 +" 2026 Jan 28 by Vim Project: fix indentation when a string literal contains 'if' #19265 " For bugs, patches and license go to https://github.com/rust-lang/rust.vim " Note: upstream seems umaintained: https://github.com/rust-lang/rust.vim/issues/502 @@ -86,16 +89,6 @@ function! s:is_string_comment(lnum, col) endif endfunction -if exists('*shiftwidth') - function! s:shiftwidth() - return shiftwidth() - endfunc -else - function! s:shiftwidth() - return &shiftwidth - endfunc -endif - function GetRustIndent(lnum) " Starting assumption: cindent (called at the end) will do it right " normally. We just want to fix up a few cases. @@ -147,9 +140,24 @@ function GetRustIndent(lnum) let l:standalone_close = line =~# '\V\^\s\*}\s\*\$' let l:standalone_where = line =~# '\V\^\s\*where\s\*\$' if l:standalone_open || l:standalone_close || l:standalone_where - " ToDo: we can search for more items than 'fn' and 'if'. - let [l:found_line, l:col, l:submatch] = - \ searchpos('\<\(fn\)\|\(if\)\>', 'bnWp') + let l:orig_line = line('.') + let l:orig_col = col('.') + let l:i = 0 + while 1 + " ToDo: we can search for more items than 'fn' and 'if'. + let [l:found_line, l:col, l:submatch] = + \ searchpos('\<\(fn\|if\)\>', 'bWp') + if l:found_line ==# 0 || !s:is_string_comment(l:found_line, l:col) + break + endif + let l:i += 1 + " Limit to 10 iterations as a failsafe against endless looping. + if l:i >= 10 + let l:found_line = 0 + break + endif + endwhile + call cursor(l:orig_line, l:orig_col) if l:found_line !=# 0 " Now we count the number of '{' and '}' in between the match " locations and the current line (there is probably a better @@ -204,6 +212,22 @@ function GetRustIndent(lnum) endif endif + " Prevent cindent from becoming confused when pairing square brackets, as + " in + " + " let arr = [[u8; 4]; 2] = [ + " [0; 4], + " [1, 3, 5, 9], + " ]; + " | ← indentation placed here + " + " for which it calculates too much indentation in the line following the + " close of the array. + if prevline =~# '^\s*\]' && l:last_prevline_character ==# ';' + \ && line !~# '^\s*}' + return indent(prevlinenum) + endif + if l:last_prevline_character ==# "," \ && s:get_line_trimmed(a:lnum) !~# '^\s*[\[\]{})]' \ && prevline !~# '^\s*fn\s' @@ -240,43 +264,6 @@ function GetRustIndent(lnum) return indent(prevlinenum) endif - if !has("patch-7.4.355") - " cindent before 7.4.355 doesn't do the module scope well at all; e.g.:: - " - " static FOO : &'static [bool] = [ - " true, - " false, - " false, - " true, - " ]; - " - " uh oh, next statement is indented further! - - " Note that this does *not* apply the line continuation pattern properly; - " that's too hard to do correctly for my liking at present, so I'll just - " start with these two main cases (square brackets and not returning to - " column zero) - - call cursor(a:lnum, 1) - if searchpair('{\|(', '', '}\|)', 'nbW', - \ 's:is_string_comment(line("."), col("."))') == 0 - if searchpair('\[', '', '\]', 'nbW', - \ 's:is_string_comment(line("."), col("."))') == 0 - " Global scope, should be zero - return 0 - else - " At the module scope, inside square brackets only - "if getline(a:lnum)[0] == ']' || search('\[', '', '\]', 'nW') == a:lnum - if line =~# "^\\s*]" - " It's the closing line, dedent it - return 0 - else - return shiftwidth() - endif - endif - endif - endif - " Fall back on cindent, which does it mostly right return cindent(a:lnum) endfunction diff --git a/runtime/indent/sh.vim b/runtime/indent/sh.vim index a1abd1d0..daf9170b 100644 --- a/runtime/indent/sh.vim +++ b/runtime/indent/sh.vim @@ -7,6 +7,7 @@ " License: Vim (see :h license) " Repository: https://github.com/chrisbra/vim-sh-indent " Changelog: +" 20250906 - indent function closing properly on multiline commands " 20250318 - Detect local arrays in functions " 20241411 - Detect dash character in function keyword for " bash mode (issue #16049) @@ -186,6 +187,15 @@ function! GetShIndent() endif endif + " Special case: if the current line is a closing '}', align with matching '{' + if curline =~ '^\s*}\s*$' + let match_lnum = searchpair('{', '', '}', 'bnW', + \ 'synIDattr(synID(line("."),col("."), 1),"name") =~? "comment\\|quote"') + if match_lnum > 0 + return indent(match_lnum) + endif + endif + return ind > 0 ? ind : 0 endfunction diff --git a/runtime/indent/sml.vim b/runtime/indent/sml.vim index a0b0c3e9..189452f4 100644 --- a/runtime/indent/sml.vim +++ b/runtime/indent/sml.vim @@ -1,17 +1,18 @@ " Vim indent file " Language: SML -" Maintainer: Saikat Guha -" Hubert Chao +" Maintainer: Saikat Guha +" Hubert Chao " Original OCaml Version: -" Jean-Francois Yuen +" Jean-Francois Yuen " Mike Leary " Markus Mottl " OCaml URL: http://www.oefai.at/~markus/vim/indent/ocaml.vim " Last Change: 2022 Apr 06 -" 2002 Nov 06 - Some fixes (JY) +" 2002 Nov 06 - Some fixes (JY) " 2002 Oct 28 - Fixed bug with indentation of ']' (MM) " 2002 Oct 22 - Major rewrite (JY) -" 2022 April: b:undo_indent added by Doug Kearns +" 2022 Apr 08 - b:undo_indent added by Doug Kearns +" 2025 Nov 04 - Move comments and formatoptions to ftplugin " Only load this indent file when no other was loaded. if exists("b:did_indent") @@ -29,12 +30,6 @@ setlocal shiftwidth=2 let b:undo_indent = "setl et< inde< indk< lisp< si< sw< tw<" -" Comment formatting -if (has("comments")) - set comments=sr:(*,mb:*,ex:*) - set fo=cqort -endif - " Only define the function once. "if exists("*GetSMLIndent") "finish diff --git a/runtime/indent/testdir/rust.in b/runtime/indent/testdir/rust.in new file mode 100644 index 00000000..9b1912b2 --- /dev/null +++ b/runtime/indent/testdir/rust.in @@ -0,0 +1,50 @@ +// vim: set ft=rust ts=8 sw=4 sts=4 et : +// START_INDENT +use std::fs::File; +use std::io::prelude::*; +use std::path::Path; + +fn main() { + // Create a path to the desired file + let path = Path::new("hello.txt"); + let display = path.display(); + + // Open the path in read-only mode, returns `io::Result` + let mut file = match File::open(&path) { + Err(why) => panic!("couldn't open {}: {}", display, why), + Ok(file) => file, + }; + + // Start doing nothing forever + loop { + let arr1 = [[u8; 4]; 2] = [ + [0; 4], + [1, 3, 5, 9], + ]; + } + + // Plan for a future that will never come + let arr2 = [[u8; 4]; 2] = [ + [1; 4], + [2, 4, 6, 8], + ]; + let arr2_ref = &arr2; + + // Read the file contents into a string, returns `io::Result` + let mut s = String::new(); + match file.read_to_string(&mut s) { + Err(why) => panic!("couldn't read {}: {}", display, why), + Ok(_) => print!("{} contains:\n{}", display, s), + } + + // file goes out of scope, and the "hello.txt" file gets closed +} +// END_INDENT + +// START_INDENT +let x = " + if fn motif + "; + struct X { + } +// END_INDENT diff --git a/runtime/indent/testdir/rust.ok b/runtime/indent/testdir/rust.ok new file mode 100644 index 00000000..73fff062 --- /dev/null +++ b/runtime/indent/testdir/rust.ok @@ -0,0 +1,50 @@ +// vim: set ft=rust ts=8 sw=4 sts=4 et : +// START_INDENT +use std::fs::File; +use std::io::prelude::*; +use std::path::Path; + +fn main() { + // Create a path to the desired file + let path = Path::new("hello.txt"); + let display = path.display(); + + // Open the path in read-only mode, returns `io::Result` + let mut file = match File::open(&path) { + Err(why) => panic!("couldn't open {}: {}", display, why), + Ok(file) => file, + }; + + // Start doing nothing forever + loop { + let arr1 = [[u8; 4]; 2] = [ + [0; 4], + [1, 3, 5, 9], + ]; + } + + // Plan for a future that will never come + let arr2 = [[u8; 4]; 2] = [ + [1; 4], + [2, 4, 6, 8], + ]; + let arr2_ref = &arr2; + + // Read the file contents into a string, returns `io::Result` + let mut s = String::new(); + match file.read_to_string(&mut s) { + Err(why) => panic!("couldn't read {}: {}", display, why), + Ok(_) => print!("{} contains:\n{}", display, s), + } + + // file goes out of scope, and the "hello.txt" file gets closed +} +// END_INDENT + +// START_INDENT +let x = " + if fn motif + "; + struct X { +} +// END_INDENT diff --git a/runtime/indent/testdir/yaml.in b/runtime/indent/testdir/yaml.in index bf99668d..8500b0d8 100644 --- a/runtime/indent/testdir/yaml.in +++ b/runtime/indent/testdir/yaml.in @@ -18,3 +18,22 @@ map: | line1 line2 # END_INDENT + +# START_INDENT +list: + - element1: + foo: bar + - element2: + foo: bar +# END_INDENT + +# START_INDENT +- name: test playbook + hosts: localhost + gather_facts: false + + tasks: + - name: hello world + ansible.builtin.debug: + msg: "hello world" +# END_INDENT diff --git a/runtime/indent/testdir/yaml.ok b/runtime/indent/testdir/yaml.ok index 8b38633e..86a3ce48 100644 --- a/runtime/indent/testdir/yaml.ok +++ b/runtime/indent/testdir/yaml.ok @@ -18,3 +18,22 @@ map: | line1 line2 # END_INDENT + +# START_INDENT +list: + - element1: + foo: bar + - element2: + foo: bar +# END_INDENT + +# START_INDENT +- name: test playbook + hosts: localhost + gather_facts: false + + tasks: + - name: hello world + ansible.builtin.debug: + msg: "hello world" +# END_INDENT diff --git a/runtime/indent/xml.vim b/runtime/indent/xml.vim index 5bf53ad1..db71fc03 100644 --- a/runtime/indent/xml.vim +++ b/runtime/indent/xml.vim @@ -88,7 +88,9 @@ endfun " [-- return the sum of indents of a:lnum --] fun! XmlIndentSum(line, style, add) - if IsXMLContinuation(a:line) && a:style == 0 && !IsXMLEmptyClosingTag(a:line) + if IsXMLContinuation(a:line) && + \ a:style == 0 && + \ !IsXMLEmptyClosingTag(a:line) " no complete tag, add one additional indent level " but only for the current line return a:add + shiftwidth() @@ -157,6 +159,17 @@ fun! XmlIndentGet(lnum, use_syntax_check) " no extra indent, looks like a text continuation line return pind endif + elseif empty(syn_name_start) && syn_name_end =~? 'xmlTag' + " Special case: such a line, shouldn't be indented, just because it + " ends with a tag + " 'foobar inline tags' + if (match(curline, '<\([:a-zA-Z_]\+\)[^>]*>.*') > -1) + return pind + endif + endif + + if curline =~ '^\s*' + return ReturnIndentForMatchingTag(curline) endif " Get indent from previous tag line @@ -181,6 +194,21 @@ func! IsXMLEmptyClosingTag(line) return a:line =~? '<[^>]*/>\s*$' endfunc +func! ReturnIndentForMatchingTag(line) + " For a line with just a simple closing tag + " get the indent from a matching opening tag + if a:line =~? '^\s*' + let _c = getcursorpos() + let pat = matchstr(a:line, '^\s*') + " position cursor before the opening tag + norm! 0 + " get the indent from the matching opening tag + let match_line = searchpair('<' .. pat .. '>', '', '', 'bn') + call setpos('.', _c) + return indent(match_line) + endif +endfunc + " return indent for a commented line, " the middle part might be indented one additional level func! XmlIndentComment(lnum) diff --git a/runtime/indent/yaml.vim b/runtime/indent/yaml.vim index c3871274..1b0110e8 100644 --- a/runtime/indent/yaml.vim +++ b/runtime/indent/yaml.vim @@ -5,6 +5,8 @@ " Last Change: 2022 Jun 17 " 2024 Feb 29 by Vim project: disable mulitline indent by default " 2024 Aug 14 by Vim project: fix re-indenting when commenting out lines +" 2026 Jan 08 by Vim project: fix object indentation in array +" 2026 Jan 15 by Vim project: fix double shiftwidth from previous change " Only load this indent file when no other was loaded. if exists('b:did_indent') @@ -114,7 +116,13 @@ function GetYAMLIndent(lnum) " " - |- " Block scalar without indentation indicator - return previndent+shiftwidth() + if prevline =~# '^\s*-\s.*:$' + " Special case: list item with mapping key (- key:) + " Need to account for the "- " prefix + return previndent + 2 + shiftwidth() + else + return previndent+shiftwidth() + endif elseif prevline =~# '\v[:-]\ [|>]%(\d+[+\-]?|[+\-]?\d+)%(\#.*|\s*)$' " - |+2 " block scalar with indentation indicator @@ -136,6 +144,9 @@ function GetYAMLIndent(lnum) let prevmapline = s:FindPrevLEIndentedLineMatchingRegex(a:lnum, \ s:mapkeyregex) if getline(prevmapline) =~# '^\s*- ' + " Previous mapping key is in a list item (- key:) + " The key effectively starts at indent + 2 (after "- ") + " Content under it should be indented relative to the key position return indent(prevmapline) + 2 else return indent(prevmapline) diff --git a/runtime/keymap/esperanto_utf-8.vim b/runtime/keymap/esperanto_utf-8.vim index 3d335cb2..2910a6f0 100644 --- a/runtime/keymap/esperanto_utf-8.vim +++ b/runtime/keymap/esperanto_utf-8.vim @@ -7,7 +7,7 @@ " " All keys same as usual, except: " ^ followed by any of CcGgHhJjSs adds a circumflex on top of the letter -" and replaces the grave accent by a breve +" ù and Ù replaces the grave accent by a breve " any of CcGgHhJjSsUu followed by X or x maps to consonant with ^ or Uu with " breve. @@ -21,7 +21,7 @@ let b:keymap_name = "Eo" " digraph C> 0x0108 c> 0x0109 G> 0x011C g> 0x011D H> 0x0124 h> 0x0125 " digraph J> 0x0134 j> 0x0135 S> 0x015C s> 0x015D U( 0x016C u( 0x016D -scriptencoding latin1 +scriptencoding utf-8 loadkeymap @@ -35,8 +35,8 @@ loadkeymap ^j " (309) LOWERCASE j WITH CIRCUMFLEX ^S " (348) UPPERCASE S WITH CIRCUMFLEX ^s " (349) LOWERCASE s WITH CIRCUMFLEX - " (364) UPPERCASE U WITH BREVE - " (365) LOWERCASE u WITH BREVE +Ù " (364) UPPERCASE U WITH BREVE +ù " (365) LOWERCASE u WITH BREVE CX " (264) UPPERCASE C WITH CIRCUMFLEX Cx " (264) UPPERCASE C WITH CIRCUMFLEX diff --git a/runtime/keymap/greek_utf-8.vim b/runtime/keymap/greek_utf-8.vim index c6cc3256..15292e98 100644 --- a/runtime/keymap/greek_utf-8.vim +++ b/runtime/keymap/greek_utf-8.vim @@ -557,8 +557,8 @@ v| " GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI " " " Greek Quotes if your keyboard supports them - " QUOTEDBLLEFT - " QUOTEDBLRIGHT +´ " QUOTEDBLLEFT +ª " QUOTEDBLRIGHT " " " diff --git a/runtime/keymap/hebrewp_utf-8.vim b/runtime/keymap/hebrewp_utf-8.vim index dded60e3..526174a3 100644 --- a/runtime/keymap/hebrewp_utf-8.vim +++ b/runtime/keymap/hebrewp_utf-8.vim @@ -6,33 +6,33 @@ " Use this short name in the status line. let b:keymap_name = "hebp" loadkeymap -w " - shin -n " - nun -b " - bet -g " - gimel -q " - qof -k " - kaf -g " - ayin -y " - yod -N " - final nun -j " - het -l " - lamed -K " - final kaf -x " - tsadi -m " - mem -M " - final mem -p " - pe -r " - resh -d " - dalet -a " - alef -v " - vav -h " - he -s " - samekh -T " - tet -z " - zayin -t " - tav -X " - final tsadi -P " - final pe +w " ש - shin +n " נ - nun +b " ב - bet +g " ג - gimel +q " ק - qof +k " כ - kaf +g " ע - ayin +y " י - yod +N " ן - final nun +j " ח - het +l " ל - lamed +K " ך - final kaf +x " צ - tsadi +m " מ - mem +M " ם - final mem +p " פ - pe +r " ר - resh +d " ד - dalet +a " א - alef +v " ו - vav +h " ה - he +s " ס - samekh +T " ט - tet +z " ז - zayin +t " ת - tav +X " ץ - final tsadi +P " ף - final pe A: " sheva HE " hataf segol HA " hataf patah @@ -47,7 +47,7 @@ U " qubuts D " dagesh ]T " meteg ]Q " maqaf -]R " rafe +]R <ּChar-0x5bf> " rafe ]p " paseq SR " shin-dot SL " sin-dot diff --git a/runtime/lang/Make_mvc.mak b/runtime/lang/Make_mvc.mak index 4f08a8cd..2a082447 100644 --- a/runtime/lang/Make_mvc.mak +++ b/runtime/lang/Make_mvc.mak @@ -424,6 +424,42 @@ menu_sr_rs.iso_8859-5.vim : menu_sr_rs.utf-8.vim [System.IO.File]::WriteAllText(\"$@\", $$out, \ [System.Text.Encoding]::GetEncoding(28595)) +# Convert menu_sv_se.utf-8.vim to menu_sv_se.iso_8859-1.vim. +menu_sv_se.iso_8859-1.vim : menu_sv_se.utf-8.vim + - $(RM) $@ +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t ISO-8859-1 $? >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$?\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(28591)) +!ENDIF + $(PS) $(PSFLAGS) $$out = [System.IO.File]::ReadAllText(\"$@\", \ + [System.Text.Encoding]::GetEncoding(28591)) -replace \ + 'scriptencoding utf-8', 'scriptencoding iso-8859-1' -replace \ + 'Original translations', 'Generated from $?, DO NOT EDIT'; \ + [System.IO.File]::WriteAllText(\"$@\", $$out, \ + [System.Text.Encoding]::GetEncoding(28591)) + +# Convert menu_sv_se.utf-8.vim to menu_swedish_sweden.1252.vim. +menu_swedish_sweden.1252.vim : menu_sv_se.utf-8.vim + - $(RM) $@ +!IF DEFINED (ICONV) + $(ICONV) -f UTF-8 -t CP1252 $? >$@ +!ELSE + $(PS) $(PSFLAGS) [System.IO.File]::WriteAllText(\"$@\", \ + [System.IO.File]::ReadAllText(\"$?\", \ + [System.Text.Encoding]::GetEncoding(65001)), \ + [System.Text.Encoding]::GetEncoding(1252)) +!ENDIF + $(PS) $(PSFLAGS) $$out = [System.IO.File]::ReadAllText(\"$@\", \ + [System.Text.Encoding]::GetEncoding(1252)) -replace \ + 'scriptencoding utf-8', 'scriptencoding cp1252' -replace \ + 'Original translations', 'Generated from $?, DO NOT EDIT'; \ + [System.IO.File]::WriteAllText(\"$@\", $$out, \ + [System.Text.Encoding]::GetEncoding(1252)) + # Convert menu_tr_tr.utf-8.vim to menu_tr_tr.cp1254.vim. menu_tr_tr.cp1254.vim : menu_tr_tr.utf-8.vim - $(RM) $@ diff --git a/runtime/lang/Makefile b/runtime/lang/Makefile index 211d4925..902ef94a 100644 --- a/runtime/lang/Makefile +++ b/runtime/lang/Makefile @@ -196,7 +196,7 @@ menu_sr_rs.ascii.vim: menu_sr_rs.utf-8.vim -e 's/scriptencoding utf-8/scriptencoding latin1/' \ -e 's/" Original translations/" Generated from $?, DO NOT EDIT/' \ $? > $@ - + # Convert menu_uk_ua.utf-8.vim to create menu_uk_ua.cp1251.vim. menu_uk_ua.cp1251.vim: menu_uk_ua.utf-8.vim rm -f $@ diff --git a/runtime/lang/menu_ca.utf-8.vim b/runtime/lang/menu_ca.utf-8.vim index 23ee10da..7e0ecf3d 100644 --- a/runtime/lang/menu_ca.utf-8.vim +++ b/runtime/lang/menu_ca.utf-8.vim @@ -1,6 +1,6 @@ " Menu translations for Catalan " -" Maintainer: Ernest Adrogu +" Maintainer: Ernest Adrogué " Last Change: 29 Dec 2003 " source :p:h/menu_ca_es.latin1.vim diff --git a/runtime/lang/menu_ca_es.utf-8.vim b/runtime/lang/menu_ca_es.utf-8.vim index 23ee10da..7e0ecf3d 100644 --- a/runtime/lang/menu_ca_es.utf-8.vim +++ b/runtime/lang/menu_ca_es.utf-8.vim @@ -1,6 +1,6 @@ " Menu translations for Catalan " -" Maintainer: Ernest Adrogu +" Maintainer: Ernest Adrogué " Last Change: 29 Dec 2003 " source :p:h/menu_ca_es.latin1.vim diff --git a/runtime/lang/menu_chinese_gb.936.vim b/runtime/lang/menu_chinese_gb.936.vim index 7fa609bb..5fbc8d20 100644 --- a/runtime/lang/menu_chinese_gb.936.vim +++ b/runtime/lang/menu_chinese_gb.936.vim @@ -1,7 +1,7 @@ " Menu Translations: Simplified Chinese " Maintainer: Ada (Haowen) Yu " Previous Maintainer: Shun Bai , Yuheng Xie -" Last Change: 2022 July 9 +" Last Change: 2026 Feb 19 " Generated from menu_zh_cn.utf-8.vim, DO NOT EDIT " " Generated with the scripts from: @@ -28,7 +28,7 @@ menutrans &How-to\ Links menutrans &Find\.\.\. (&F)\.\.\. menutrans &Credits л(&C) menutrans Co&pying Ȩ(&P) -menutrans &Sponsor/Register /ע(&S) +menutrans &Sponsor (&S) menutrans O&rphans ȹ¶(&R) menutrans &Version 汾(&V) menutrans &About (&A) diff --git a/runtime/lang/menu_chinese_taiwan.950.vim b/runtime/lang/menu_chinese_taiwan.950.vim index c2ae9f93..8412b1c5 100644 --- a/runtime/lang/menu_chinese_taiwan.950.vim +++ b/runtime/lang/menu_chinese_taiwan.950.vim @@ -1,6 +1,6 @@ " Menu Translations: Traditional Chinese " Translated By: Hung-Te Lin -" Last Change: 2012 May 01 +" Last Change: 2026 Feb 19 " Generated from menu_zh_tw.utf-8.vim, DO NOT EDIT " {{{ Quit when menu translations have already been done. @@ -24,7 +24,7 @@ menutrans &How-to\ links menutrans &GUI ϫɭ(&G) menutrans &Credits P(&C) menutrans Co&pying v(&P) -menutrans &Sponsor/Register ٧U/U(&S) +menutrans &Sponsor ٧U(&S) menutrans O&rphans @ϩt(&R) " ------------------------------------------------------------------------ menutrans &Version {T(&V) diff --git a/runtime/lang/menu_ja_jp.euc-jp.vim b/runtime/lang/menu_ja_jp.euc-jp.vim index 809ef5ac..6d3b689b 100644 --- a/runtime/lang/menu_ja_jp.euc-jp.vim +++ b/runtime/lang/menu_ja_jp.euc-jp.vim @@ -2,9 +2,9 @@ " " Menu Translations: Japanese (EUC-JP) " Last Translator: MURAOKA Taro -" Last Change: 18-Dec-2023. +" Last Change: 18-Jan-2026. " -" Copyright (C) 2001-2023 MURAOKA Taro , +" Copyright (C) 2001-2026 MURAOKA Taro , " vim-jp " " THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. @@ -28,7 +28,7 @@ menutrans &User\ Manual menutrans &How-To\ links &How-to menutrans &Credits 쥸å(&C) menutrans Co&pying (&P) -menutrans &Sponsor/Register ݥ󥵡/Ͽ(&S) +menutrans &Sponsor ݥ󥵡(&S) menutrans O&rphans ɻ(&R) menutrans &Version С(&V) menutrans &About VimˤĤ(&A) diff --git a/runtime/lang/menu_ja_jp.utf-8.vim b/runtime/lang/menu_ja_jp.utf-8.vim index f376da76..40b9c21e 100644 --- a/runtime/lang/menu_ja_jp.utf-8.vim +++ b/runtime/lang/menu_ja_jp.utf-8.vim @@ -2,9 +2,9 @@ " " Menu Translations: Japanese (UTF-8) " Last Translator: MURAOKA Taro -" Last Change: 18-Dec-2023. +" Last Change: 18-Jan-2026. " -" Copyright (C) 2001-2023 MURAOKA Taro , +" Copyright (C) 2001-2026 MURAOKA Taro , " vim-jp " " THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. @@ -28,7 +28,7 @@ menutrans &User\ Manual ユーザーマニュアル(&U) menutrans &How-To\ links &How-toリンク menutrans &Credits クレジット(&C) menutrans Co&pying 著作権情報(&P) -menutrans &Sponsor/Register スポンサー/登録(&S) +menutrans &Sponsor スポンサー(&S) menutrans O&rphans 孤児(&R) menutrans &Version バージョン情報(&V) menutrans &About Vimについて(&A) diff --git a/runtime/lang/menu_japanese_japan.932.vim b/runtime/lang/menu_japanese_japan.932.vim index 2cb1f678..479a768a 100644 --- a/runtime/lang/menu_japanese_japan.932.vim +++ b/runtime/lang/menu_japanese_japan.932.vim @@ -2,9 +2,9 @@ " " Menu Translations: Japanese (CP932) " Last Translator: MURAOKA Taro -" Last Change: 18-Dec-2023. +" Last Change: 18-Jan-2026. " -" Copyright (C) 2001-2023 MURAOKA Taro , +" Copyright (C) 2001-2026 MURAOKA Taro , " vim-jp " " THIS FILE IS DISTRIBUTED UNDER THE VIM LICENSE. @@ -28,7 +28,7 @@ menutrans &User\ Manual menutrans &How-To\ links &How-toN menutrans &Credits NWbg(&C) menutrans Co&pying 쌠(&P) -menutrans &Sponsor/Register X|T[/o^(&S) +menutrans &Sponsor X|T[(&S) menutrans O&rphans ǎ(&R) menutrans &Version o[W(&V) menutrans &About Vimɂ‚(&A) diff --git a/runtime/lang/menu_pt_pt.utf-8.vim b/runtime/lang/menu_pt_pt.utf-8.vim index 7fc73d14..e8ab62da 100644 --- a/runtime/lang/menu_pt_pt.utf-8.vim +++ b/runtime/lang/menu_pt_pt.utf-8.vim @@ -1,3 +1,3 @@ -" Menu Translations: Portugus +" Menu Translations: Português source :p:h/menu_pt_pt.vim diff --git a/runtime/lang/menu_ru_ru.cp1251.vim b/runtime/lang/menu_ru_ru.cp1251.vim index fd5ad73b..0ffab523 100644 --- a/runtime/lang/menu_ru_ru.cp1251.vim +++ b/runtime/lang/menu_ru_ru.cp1251.vim @@ -2,15 +2,14 @@ " Maintainer: Restorer, " Previous Maintainer: Sergey Alyoshin, " vassily ragosin, -" Last Change: 23 Aug 2023 -" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT +" Last Change: 28 Dec 2025 " URL: https://github.com/RestorerZ/RuVim " -" " Adopted for RuVim project by Vassily Ragosin. " First translation: Tim Alexeevsky, , " based on ukrainian translation by Bohdan Vlasyuk, " +" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT " " Quit when menu translations have already been done. " @@ -44,7 +43,7 @@ menutrans &Find\.\.\. & "-------------------- menutrans &Credits & menutrans Co&pying & -menutrans &Sponsor/Register &\ \ +menutrans &Sponsor &\ menutrans O&rphans & "-------------------- menutrans &Version &\ @@ -264,7 +263,7 @@ menutrans Cu&t & menutrans &Copy & menutrans &Paste & menutrans &Delete & -menutrans Select\ Blockwise \ +menutrans Select\ Blockwise \ menutrans Select\ &Word \ & menutrans Select\ &Line \ & menutrans Select\ &Block \ & @@ -347,7 +346,7 @@ let menutrans_no_file = "[ " Menus to handle Russian encodings " Thanks to Pavlo Bohmat for the idea -" vassily ragosin +" vassily ragosin, " an 10.355 &File.-SEP- an 10.360.20 &File.\ \ \.\.\..CP1251 :browse e ++enc=cp1251 diff --git a/runtime/lang/menu_ru_ru.koi8-r.vim b/runtime/lang/menu_ru_ru.koi8-r.vim index a6e8bdad..712731c2 100644 --- a/runtime/lang/menu_ru_ru.koi8-r.vim +++ b/runtime/lang/menu_ru_ru.koi8-r.vim @@ -2,15 +2,14 @@ " Maintainer: Restorer, " Previous Maintainer: Sergey Alyoshin, " vassily ragosin, -" Last Change: 23 Aug 2023 -" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT +" Last Change: 28 Dec 2025 " URL: https://github.com/RestorerZ/RuVim " -" " Adopted for RuVim project by Vassily Ragosin. " First translation: Tim Alexeevsky, , " based on ukrainian translation by Bohdan Vlasyuk, " +" Generated from menu_ru_ru.utf-8.vim, DO NOT EDIT " " Quit when menu translations have already been done. " @@ -44,7 +43,7 @@ menutrans &Find\.\.\. & "-------------------- menutrans &Credits & menutrans Co&pying & -menutrans &Sponsor/Register &\ \ +menutrans &Sponsor &\ menutrans O&rphans & "-------------------- menutrans &Version &\ @@ -264,7 +263,7 @@ menutrans Cu&t & menutrans &Copy & menutrans &Paste & menutrans &Delete & -menutrans Select\ Blockwise \ +menutrans Select\ Blockwise \ menutrans Select\ &Word \ & menutrans Select\ &Line \ & menutrans Select\ &Block \ & @@ -347,7 +346,7 @@ let menutrans_no_file = "[ " Menus to handle Russian encodings " Thanks to Pavlo Bohmat for the idea -" vassily ragosin +" vassily ragosin, " an 10.355 &File.-SEP- an 10.360.20 &File.\ \ \.\.\..CP1251 :browse e ++enc=cp1251 diff --git a/runtime/lang/menu_ru_ru.utf-8.vim b/runtime/lang/menu_ru_ru.utf-8.vim index 68af944a..0a36911b 100644 --- a/runtime/lang/menu_ru_ru.utf-8.vim +++ b/runtime/lang/menu_ru_ru.utf-8.vim @@ -2,15 +2,14 @@ " Maintainer: Restorer, " Previous Maintainer: Sergey Alyoshin, " vassily ragosin, -" Last Change: 23 Aug 2023 -" Original translations +" Last Change: 28 Dec 2025 " URL: https://github.com/RestorerZ/RuVim " -" " Adopted for RuVim project by Vassily Ragosin. " First translation: Tim Alexeevsky, , " based on ukrainian translation by Bohdan Vlasyuk, " +" Original translations " " Quit when menu translations have already been done. " @@ -44,7 +43,7 @@ menutrans &Find\.\.\. &Найти\.\.\. "-------------------- menutrans &Credits Со&авторы menutrans Co&pying &Лицензия -menutrans &Sponsor/Register Сод&ействие\ и\ регистрация +menutrans &Sponsor Сод&ействие\ проекту menutrans O&rphans &Благотворительность "-------------------- menutrans &Version &Текущая\ версия @@ -264,7 +263,7 @@ menutrans Cu&t &Вырезать menutrans &Copy &Копировать menutrans &Paste Вст&авить menutrans &Delete &Удалить -menutrans Select\ Blockwise Блоковое\ выделение +menutrans Select\ Blockwise Блочное\ выделение menutrans Select\ &Word Выделить\ с&лово menutrans Select\ &Line Выделить\ с&троку menutrans Select\ &Block Выделить\ &блок @@ -347,7 +346,7 @@ let menutrans_no_file = "[Безымянный]" " Menus to handle Russian encodings " Thanks to Pavlo Bohmat for the idea -" vassily ragosin +" vassily ragosin, " an 10.355 &File.-SEP- an 10.360.20 &File.Открыть\ в\ кодировке\.\.\..CP1251 :browse e ++enc=cp1251 diff --git a/runtime/lang/menu_sr_rs.iso_8859-5.vim b/runtime/lang/menu_sr_rs.iso_8859-5.vim index f0b5b37f..9951431b 100644 --- a/runtime/lang/menu_sr_rs.iso_8859-5.vim +++ b/runtime/lang/menu_sr_rs.iso_8859-5.vim @@ -1,6 +1,6 @@ " Menu Translations: Serbian " Maintainer: Aleksandar Jelenak -" Last Change: Fri, 30 May 2003 10:17:39 Eastern Daylight Time +" Last Change: 2024 May 2 " Adapted for VIM 8 by: on 2017-12-28 12:05+0400 " Generated from menu_sr_rs.utf-8.vim, DO NOT EDIT @@ -117,8 +117,8 @@ menutrans Create\ &Foldzf menutrans &Delete\ Foldzd &\ zd menutrans Delete\ &All\ FoldszD \ \ &zD menutrans Fold\ column\ &width \ &\ -"menutrans &Diff & -menutrans &Make:make 'mak&':make +menutrans &Diff +menutrans &Make:make :make menutrans &List\ Errors:cl \ &:cl menutrans L&ist\ Messages:cl! &\ :cl! menutrans &Next\ Error:cn &\ :cn @@ -254,7 +254,7 @@ if has("toolbar") tmenu ToolBar.LoadSesn tmenu ToolBar.SaveSesn tmenu ToolBar.RunScript - tmenu ToolBar.Make 'make' + tmenu ToolBar.Make tmenu ToolBar.Shell tmenu ToolBar.RunCtags tmenu ToolBar.TagJump @@ -294,4 +294,4 @@ let menutrans_no_file = "[ let &cpo = s:keepcpo unlet s:keepcpo -" vim: tw=0 keymap=serbian +" vim: tw=0 diff --git a/runtime/lang/menu_sv_se.latin1.vim b/runtime/lang/menu_sv_se.latin1.vim index 6a5d39b4..62930caa 100644 --- a/runtime/lang/menu_sv_se.latin1.vim +++ b/runtime/lang/menu_sv_se.latin1.vim @@ -19,188 +19,193 @@ endif " Help menu menutrans &Help &Hjlp -menutrans &Overview &versikt +menutrans &Overview v&ersikt menutrans &User\ Manual &Anvndarmanual menutrans &How-to\ links &Hur-gra-lnkar menutrans &Find\.\.\. &Sk\.\.\. -menutrans &Credits &Tack -menutrans Co&pying &Kopieringsrttigheter +menutrans &Credits &Tack\ till +menutrans Co&pying &Kopiering menutrans &Sponsor/Register &Sponsra/Registrera -menutrans O&rphans &Frldralsa +menutrans O&rphans &Frldralsa\ barn menutrans &Version &Version menutrans &About &Om " File menu + menutrans &File &Arkiv -menutrans &Open\.\.\.:e &ppna\.\.\.:e -menutrans Sp&lit-Open\.\.\.:sp ppna\ i\ splitt-vy\.\.\.:sp -menutrans Open\ &Tab\.\.\.:tabnew ppna\ flik\.\.\.:tabnew +menutrans &Open\.\.\.:e &ppna\.\.\.:e +menutrans Sp&lit-Open\.\.\.:sp ppna\ i\ &delad\ vy\.\.\.:sp +menutrans Open\ &Tab\.\.\.:tabnew ppna\ &flik\.\.\.:tabnew menutrans &New:enew &Ny:enew menutrans &Close:close S&tng:close menutrans &Save:w &Spara:w -menutrans Save\ &As\.\.\.:sav Spara\ som\.\.\.:sav -menutrans Split\ &Diff\ with\.\.\. Dela\ diff\ med\.\.\. -menutrans Split\ Patched\ &By\.\.\. Dela\ lappad\ med\.\.\. +menutrans Save\ &As\.\.\.:sav Spara\ so&m\.\.\.:sav +menutrans Split\ &Diff\ with\.\.\. Dela\ &diff\ med\.\.\. +menutrans Split\ Patched\ &By\.\.\. Dela\ &lappad\ med\.\.\. menutrans &Print Skriv\ &ut menutrans Sa&ve-Exit:wqa Spara\ &och\ avsluta:wqa -menutrans E&xit:qa &Avsluta:qa +menutrans E&xit:qa A&vsluta:qa " Edit menu -menutrans &Edit &Redigera -menutrans &Undou &ngrau +menutrans &Edit R&edigera +menutrans &Undou &ngrau menutrans &Redo^R &Gr\ om^R -menutrans Rep&eat\. &Repetera\. +menutrans Rep&eat\. Upp&repa\. menutrans Cu&t"+x Klipp\ &ut"+x menutrans &Copy"+y &Kopiera"+y menutrans &Paste"+gP Klistra\ &in"+gP -menutrans Put\ &Before[p Stt\ in\ &fre[p -menutrans Put\ &After]p Stt\ in\ &efter]p +menutrans Put\ &Before[p Infoga\ &fre[p +menutrans Put\ &After]p Infoga\ &efter]p menutrans &Select\ AllggVG &Markera\ alltggVG menutrans &Find\.\.\. &Sk\.\.\. menutrans &Find/ &Sk/ -menutrans Find\ and\ Rep&lace\.\.\. Sk\ och\ erstt\.\.\. -menutrans Find\ and\ Rep&lace:%s Sk\ och\ erstt:%s -menutrans Find\ and\ Rep&lace Sk\ och\ erstt -menutrans Find\ and\ Rep&lace:s Sk\ och\ erstt:s +menutrans Find\ and\ Rep&lace\.\.\. Sk\ och\ e&rstt\.\.\. +menutrans Find\ and\ Rep&lace:%s Sk\ och\ e&rstt:%s +menutrans Find\ and\ Rep&lace Sk\ och\ e&rstt +menutrans Find\ and\ Rep&lace:s Sk\ och\ e&rstt:s menutrans Settings\ &Window In&stllningar menutrans &Global\ Settings Gl&obala\ instllningar menutrans F&ile\ Settings Fi&linstllningar -menutrans C&olor\ Scheme F&rgschema -menutrans &Keymap &Tangentbordsuppsttning +menutrans C&olor\ Scheme Frgs&chema +menutrans Show\ C&olor\ Schemes\ in\ Menu Visa\ fr&gscheman\ i\ meny +menutrans &Keymap &Tangentuppsttning +menutrans Show\ &Keymaps\ in\ Menu Visa\ &tangentuppsttningar\ i\ meny +menutrans Startup\ &Settings U&ppstartsinstllningar " Edit.Global Settings -menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vxla\ mnsterframhvning:set\ hls! -menutrans Toggle\ &Ignore-case:set\ ic! Vxla\ ignorering\ av\ storlek:set\ ic! -menutrans Toggle\ &Showmatch:set\ sm! Vxla\ matchningsvisning:set\ sm! -menutrans &Context\ lines Sammanhangsrader -menutrans &Virtual\ Edit Virtuell\ redigering +menutrans Toggle\ Pattern\ &Highlight:set\ hls! Vxla\ &mnsterframhvning:set\ hls! +menutrans Toggle\ &Ignoring\ Case:set\ ic! Vxla\ &ignorering\ av\ skiftlge:set\ ic! +menutrans Toggle\ &Showing\ Matched\ Pairs:set\ sm! Vxla\ visning\ av\ &matchande\ par:set\ sm! +menutrans &Context\ lines Sa&mmanhangsrader +menutrans &Virtual\ Edit &Virtuell\ redigering menutrans Never Aldrig menutrans Block\ Selection Blockval menutrans Insert\ mode Infogningslge menutrans Block\ and\ Insert Block\ och\ infogning menutrans Always Alltid -menutrans Toggle\ Insert\ &Mode:set\ im! Vxla\ infogningslge:set\ im! -menutrans Toggle\ Vi\ C&ompatible:set\ cp! Vxla\ Vi-kompabilitet:set\ cp! -menutrans Search\ &Path\.\.\. Skvg\.\.\. -menutrans Ta&g\ Files\.\.\. Taggfiler\.\.\. -menutrans Toggle\ &Toolbar Vxla\ verktygsrad -menutrans Toggle\ &Bottom\ Scrollbar Vxla\ rullningslista\ i\ botten -menutrans Toggle\ &Left\ Scrollbar Vxla\ vnster\ rullningslista -menutrans Toggle\ &Right\ Scrollbar Vxla\ hger\ rullningslista +menutrans Toggle\ Insert\ &Mode:set\ im! Vxla\ &infogningslge:set\ im! +menutrans Toggle\ Vi\ C&ompatibility:set\ cp! Vxla\ Vi-k&ompabilitet:set\ cp! +menutrans Search\ &Path\.\.\. S&kvg\.\.\. +menutrans Ta&g\ Files\.\.\. Tag&gfiler\.\.\. +menutrans Toggle\ &Toolbar Vxla\ v&erktygsrad +menutrans Toggle\ &Bottom\ Scrollbar V&xla\ rullningslista\ i\ botten +menutrans Toggle\ &Left\ Scrollbar Vxla\ &vnster\ rullningslista +menutrans Toggle\ &Right\ Scrollbar Vxla\ &hger\ rullningslista menutrans None Ingen " Edit.File Settings -menutrans Toggle\ Line\ &Numbering:set\ nu! Vxla\ radnumrering:set\ nu! -menutrans Toggle\ &List\ Mode:set\ list! Vxla\ listlge:set\ list! -menutrans Toggle\ Line\ &Wrap:set\ wrap! Vxla\ radbrytning:set\ wrap! -menutrans Toggle\ W&rap\ at\ word:set\ lbr! Vxla\ radbrytning\ vid\ ord:set\ lbr! -menutrans Toggle\ &expand-tab:set\ et! Vxla\ tab-expandering:set\ et! -menutrans Toggle\ &auto-indent:set\ ai! Vxla\ auto-indentering:set\ ai! -menutrans Toggle\ &C-indenting:set\ cin! Vxla\ C-indentering:set\ cin! -menutrans &Shiftwidth Shiftbredd -menutrans Soft\ &Tabstop Mjuk\ tab-stopp -menutrans Te&xt\ Width\.\.\. Textbredd\.\.\. -menutrans &File\ Format\.\.\. Filformat\.\.\. +menutrans Toggle\ Line\ &Numbering:set\ nu! Vxla\ rad&numrering:set\ nu! +menutrans Toggle\ Relati&ve\ Line\ Numbering:set\ rnu! Vxla\ &relativ\ radnumrering:set\ rnu! +menutrans Toggle\ &List\ Mode:set\ list! Vxla\ &listlge:set\ list! +menutrans Toggle\ Line\ &Wrapping:set\ wrap! Vxla\ radbr&ytning:set\ wrap! +menutrans Toggle\ W&rapping\ at\ word:set\ lbr! Vxla\ radbry&tning\ vid\ ord:set\ lbr! +menutrans Toggle\ Tab\ &Expanding:set\ et! Vxla\ tab-e&xpandering:set\ et! +menutrans Toggle\ &Auto\ Indenting:set\ ai! Vxla\ &automatisk\ indentering:set\ ai! +menutrans Toggle\ &C-Style\ Indenting:set\ cin! Vxla\ &C-indentering:set\ cin! +menutrans &Shiftwidth &Shiftbredd +menutrans Soft\ &Tabstop Mjuk\ &tab-stopp +menutrans Te&xt\ Width\.\.\. Te&xtbredd\.\.\. +menutrans &File\ Format\.\.\. &Filformat\.\.\. " Tools menu -menutrans &Tools &Verktyg +menutrans &Tools Ver&ktyg menutrans &Jump\ to\ this\ tagg^] &Hoppa\ till\ den\ hr\ taggeng^] -menutrans Jump\ &back^T Hoppa\ tillbaka^T -menutrans Build\ &Tags\ File Bygg\ taggfil +menutrans Jump\ &back^T Hoppa\ &tillbaka^T +menutrans Build\ &Tags\ File &Bygg\ taggfil menutrans &Make:make &Bygg:make -menutrans &List\ Errors:cl Listfel:cl -menutrans L&ist\ Messages:cl! Listmeddelande:cl! -menutrans &Next\ Error:cn Nsta\ fel:cn -menutrans &Previous\ Error:cp Tidigare\ fel:cp -menutrans &Older\ List:cold &ldre\ lista:cold +menutrans &List\ Errors:cl L&istfel:cl +menutrans L&ist\ Messages:cl! &Listmeddelande:cl! +menutrans &Next\ Error:cn &Nsta\ fel:cn +menutrans &Previous\ Error:cp Fre&gende\ fel:cp +menutrans &Older\ List:cold &ldre\ lista:cold menutrans N&ewer\ List:cnew &Nyare\ lista:cnew -menutrans Error\ &Window Felfnster +menutrans Error\ &Window Felf&nster menutrans &Update:cwin &Uppdatera:cwin -menutrans &Open:copen &ppna:copen +menutrans &Open:copen &ppna:copen menutrans &Close:cclose &Stng:cclose -menutrans &Convert\ to\ HEX:%!xxd Konvertera\ till\ HEX:%!xxd -menutrans Conve&rt\ back:%!xxd\ -r Konvertera\ tillbaka:%!xxd\ -r -menutrans Se&T\ Compiler Stt\ &kompilerare +menutrans &Convert\ to\ HEX:%!xxd &Konvertera\ till\ HEX:%!xxd +menutrans Conve&rt\ back:%!xxd\ -r Konv&ertera\ tillbaka:%!xxd\ -r +menutrans Se&T\ Compiler Stll\ in\ &kompilerare " Tools.Spelling menutrans &Spelling &Stavning menutrans &Spell\ Check\ On &Stavningskontroll\ p -menutrans &Spell\ Check\ Off Stavningskontroll\ &av -menutrans To\ &Next\ error]s Till\ &nsta\ fel -menutrans To\ &Previous\ error[s Till\ &fregende\ fel -menutrans Suggest\ &Correctionsz= Fresl\ &korrigeringar -menutrans &Repeat\ correction:spellrepall &Upprepa\ korrigering +menutrans Spell\ Check\ &Off Stavningskontroll\ a&v +menutrans To\ &Next\ error]s Till\ &nsta\ fel]s +menutrans To\ &Previous\ error[s Till\ &fregende\ fel[s +menutrans Suggest\ &Correctionsz= Fresl\ &korrigeringarz= +menutrans &Repeat\ correction:spellrepall &Upprepa\ korrigering:spellrepall " Tools.Folding -menutrans &Enable/Disable\ foldszi Vxla\ veckzi -menutrans &View\ Cursor\ Linezv Visa\ markrradzv -menutrans Vie&w\ Cursor\ Line\ onlyzMzx Visa\ bara\ markrradzMzx -menutrans C&lose\ more\ foldszm Stng\ mer\ veckzm -menutrans &Close\ all\ foldszM Stng\ alla\ veckzM -menutrans O&pen\ more\ foldszr ppna\ mer\ veckzr -menutrans &Open\ all\ foldszR ppna\ mer\ veckzR -menutrans Fold\ Met&hod Veckmetod -menutrans M&anual Manual +menutrans &Enable/Disable\ foldszi Vxla\ ve&ckzi +menutrans &View\ Cursor\ Linezv Visa\ ma&rkrradzv +menutrans Vie&w\ Cursor\ Line\ onlyzMzx Vi&sa\ bara\ markrradzMzx +menutrans C&lose\ more\ foldszm Stng\ f&ler\ veckzm +menutrans &Close\ all\ foldszM S&tng\ alla\ veckzM +menutrans O&pen\ more\ foldszr &pp&na\ mer\ veckzr +menutrans &Open\ all\ foldszR ppna\ alla\ veckzR +menutrans Fold\ Met&hod Veckmet&od +menutrans M&anual M&anuell menutrans I&ndent Indentering -menutrans E&xpression Uttryck -menutrans S&yntax Syntax -menutrans &Folding Vikning -menutrans &Diff Differans -menutrans Ma&rker Markering -menutrans Create\ &Foldzf Skapa\ veckzf -menutrans &Delete\ Foldzd Ta\ bort\ veckzd -menutrans Delete\ &All\ FoldszD Ta\ bort\ alla\ veckzD -menutrans Fold\ col&umn\ width Veckcolumnsbredd +menutrans E&xpression &Uttryck +menutrans S&yntax S&yntax +menutrans &Folding Vi&kning +menutrans &Diff &Diff +menutrans Ma&rker Mar&kering +menutrans Create\ &Foldzf Skapa\ &veckzf +menutrans &Delete\ Foldzd &Ta\ bort\ veckzd +menutrans Delete\ &All\ FoldszD Ta\ bort\ &alla\ veckzD +menutrans Fold\ col&umn\ width Veckkol&umnsbredd " Tools.Diff -menutrans &Update Uppdatera -menutrans &Get\ Block Hmta\ block -menutrans &Put\ Block Lmna\ block +menutrans &Update &Uppdatera +menutrans &Get\ Block &Hmta\ block +menutrans &Put\ Block &Lmna\ block " Names for buffer menu. menutrans &Buffers &Buffertar -menutrans &Refresh\ menu Uppdatera\ meny -menutrans &Delete Ta\ bort -menutrans &Alternate Alternativ +menutrans &Refresh\ menu &Uppdatera\ meny +menutrans &Delete Ta\ &bort +menutrans &Alternate &Alternativ menutrans &Next &Nsta -menutrans &Previous &Tidigare +menutrans &Previous &Fregende " Window menu menutrans &Window &Fnster menutrans &New^Wn &Nytt^Wn -menutrans S&plit^Ws Dela^Ws -menutrans Sp&lit\ To\ #^W^^ Dela\ till\ #^W^^ +menutrans S&plit^Ws &Dela^Ws +menutrans Sp&lit\ To\ #^W^^ &Dela\ till\ #^W^^ menutrans Split\ &Vertically^Wv Dela\ &vertikalt^Wv -menutrans Split\ File\ E&xplorer Dela\ filhanterare +menutrans Split\ File\ E&xplorer Dela\ f&ilhanterare menutrans &Close^Wc &Stng^Wc menutrans Close\ &Other(s)^Wo &Stng\ alla\ andra^Wo -menutrans Ne&xt^Ww Nsta^Ww -menutrans P&revious^WW &Tidigare^WW +menutrans Ne&xt^Ww &Nsta^Ww +menutrans P&revious^WW &Fregende^WW menutrans &Equal\ Size^W= &Samma\ storlek^W= menutrans &Max\ Height^W_ &Maximal\ storlek^W_ menutrans M&in\ Height^W1_ M&inimal\ storlek^W1_ -menutrans Max\ &Width^W\| Maximal\ bredd^W\| -menutrans Min\ Widt&h^W1\| Minimal\ bredd^W1\| -menutrans Move\ &To Flytta\ till -menutrans &Top^WK Toppen^WK -menutrans &Bottom^WJ Botten^WJ +menutrans Max\ &Width^W\| Ma&ximal\ bredd^W\| +menutrans Min\ Widt&h^W1\| Mi&nimal\ bredd^W1\| +menutrans Move\ &To Flytta\ &till +menutrans &Top^WK &Toppen^WK +menutrans &Bottom^WJ &Botten^WJ menutrans &Left\ side^WH &Vnstra\ sidan^WH menutrans &Right\ side^WL &Hgra\ sidan^WL -menutrans Rotate\ &Up^WR Rotera\ upp^WR -menutrans Rotate\ &Down^Wr Rotera\ ned^Wr -menutrans Select\ Fo&nt\.\.\. Vlj\ typsnitt\.\.\. +menutrans Rotate\ &Up^WR Rotera\ &upp^WR +menutrans Rotate\ &Down^Wr Rotera\ &ned^Wr +menutrans Select\ Fo&nt\.\.\. Vlj\ t&ypsnitt\.\.\. " The popup menu -menutrans &Undo &ngra -menutrans Cu&t Klipp\ ut +menutrans &Undo &ngra +menutrans Cu&t Klipp\ &ut menutrans &Copy &Kopiera -menutrans &Paste &Klistra\ in +menutrans &Paste Klistra\ &in menutrans &Delete &Ta\ bort menutrans Select\ Blockwise Markera\ blockvis -menutrans Select\ &Word Markera\ ord -menutrans Select\ &Line Markera\ rad -menutrans Select\ &Block Markera\ block -menutrans Select\ &All Markera\ allt +menutrans Select\ &Word Markera\ &ord +menutrans Select\ &Line Markera\ &rad +menutrans Select\ &Block Markera\ &block +menutrans Select\ &All Markera\ &allt " The GUI toolbar (for Win32 or GTK) if has("toolbar") @@ -219,9 +224,9 @@ if has("toolbar") tmenu ToolBar.Paste Klistra in tmenu ToolBar.Find Sk... tmenu ToolBar.FindNext Sk nsta - tmenu ToolBar.FindPrev Sk tidigare + tmenu ToolBar.FindPrev Sk fregende tmenu ToolBar.Replace Sk och erstt... - tmenu ToolBar.LoadSesn Ladda session + tmenu ToolBar.LoadSesn Ls in session tmenu ToolBar.SaveSesn Spara session tmenu ToolBar.RunScript Kr ett Vim-skript tmenu ToolBar.Make Bygg aktuellt projekt @@ -235,14 +240,14 @@ endif " Syntax menu menutrans &Syntax &Syntax -menutrans &Show\ filetypes\ in\ menu &Visa\ filtyper\ i\ meny +menutrans &Show\ File\ Types\ in\ Menu &Visa\ filtyper\ i\ meny menutrans &Off &Av menutrans &Manual &Manuellt -menutrans A&utomatic Automatiskt -menutrans on/off\ for\ &This\ file Av/P\ fr\ aktuell\ fil -menutrans Co&lor\ test Frgtest -menutrans &Highlight\ test Framhvningstest -menutrans &Convert\ to\ HTML Konvertera\ till\ &HTML +menutrans A&utomatic A&utomatiskt +menutrans on/off\ for\ &This\ file Av/P\ fr\ a&ktuell\ fil +menutrans Co&lor\ test Fr>est +menutrans &Highlight\ test &Framhvningstest +menutrans &Convert\ to\ HTML &Konvertera\ till\ HTML " dialog texts let menutrans_no_file = "[Ingen fil]" @@ -251,6 +256,7 @@ let g:menutrans_path_dialog = "Skriv in s let g:menutrans_tags_dialog = "Skriv in namn p taggfiler.\nSeparera namn med komma." let g:menutrans_textwidth_dialog = "Vlj ny textbredd (0 fr att frhindra formatering): " let g:menutrans_fileformat_dialog = "Vlj filformat som filen ska sparas med" +let g:menutrans_fileformat_choices = "&Unix\n&Dos\n&Mac\n&Avbryt" let &cpo = s:keepcpo unlet s:keepcpo diff --git a/runtime/lang/menu_tr_tr.cp1254.vim b/runtime/lang/menu_tr_tr.cp1254.vim index 262624de..2aae5753 100644 --- a/runtime/lang/menu_tr_tr.cp1254.vim +++ b/runtime/lang/menu_tr_tr.cp1254.vim @@ -196,9 +196,9 @@ menutrans Set\ '&filetype'\ too 'filetype'\ menutrans &Off &Kapat menutrans &Manual &El\ le menutrans A&utomatic &Otomatik -menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ in\ A/Kapat -menutrans Co&lor\ Test &Renk\ Testi -menutrans &Highlight\ Test &Vurgulama\ Testi +menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ iin\ A/Kapat +menutrans Co&lor\ Test &Renk\ Snamas +menutrans &Highlight\ Test &Vurgu\ Snamas menutrans &Convert\ to\ HTML &HTML'ye\ Dntr " Buffers menu diff --git a/runtime/lang/menu_tr_tr.iso_8859-9.vim b/runtime/lang/menu_tr_tr.iso_8859-9.vim index 1653e340..0aa12806 100644 --- a/runtime/lang/menu_tr_tr.iso_8859-9.vim +++ b/runtime/lang/menu_tr_tr.iso_8859-9.vim @@ -196,9 +196,9 @@ menutrans Set\ '&filetype'\ too 'filetype'\ menutrans &Off &Kapat menutrans &Manual &El\ le menutrans A&utomatic &Otomatik -menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ in\ A/Kapat -menutrans Co&lor\ Test &Renk\ Testi -menutrans &Highlight\ Test &Vurgulama\ Testi +menutrans On/Off\ for\ &This\ File &Bu\ Dosya\ iin\ A/Kapat +menutrans Co&lor\ Test &Renk\ Snamas +menutrans &Highlight\ Test &Vurgu\ Snamas menutrans &Convert\ to\ HTML &HTML'ye\ Dntr " Buffers menu diff --git a/runtime/lang/menu_zh_cn.utf-8.vim b/runtime/lang/menu_zh_cn.utf-8.vim index e8912c0d..79a70cf1 100644 --- a/runtime/lang/menu_zh_cn.utf-8.vim +++ b/runtime/lang/menu_zh_cn.utf-8.vim @@ -1,7 +1,7 @@ " Menu Translations: Simplified Chinese " Maintainer: Ada (Haowen) Yu " Previous Maintainer: Shun Bai , Yuheng Xie -" Last Change: 2022 July 9 +" Last Change: 2026 Feb 19 " Original translations " " Generated with the scripts from: @@ -28,7 +28,7 @@ menutrans &How-to\ Links 如何使用(&H) menutrans &Find\.\.\. 查找(&F)\.\.\. menutrans &Credits 致谢(&C) menutrans Co&pying 版权(&P) -menutrans &Sponsor/Register 赞助/注册(&S) +menutrans &Sponsor 赞助(&S) menutrans O&rphans 拯救孤儿(&R) menutrans &Version 版本(&V) menutrans &About 关于(&A) diff --git a/runtime/lang/menu_zh_tw.utf-8.vim b/runtime/lang/menu_zh_tw.utf-8.vim index 693e28d4..cefd1e59 100644 --- a/runtime/lang/menu_zh_tw.utf-8.vim +++ b/runtime/lang/menu_zh_tw.utf-8.vim @@ -1,6 +1,6 @@ " Menu Translations: Traditional Chinese " Translated By: Hung-Te Lin -" Last Change: 2012 May 01 +" Last Change: 2026 Feb 19 " Original translations " {{{ Quit when menu translations have already been done. @@ -24,7 +24,7 @@ menutrans &How-to\ links 如何作\.\.\.(&H) menutrans &GUI 圖型界面(&G) menutrans &Credits 感謝(&C) menutrans Co&pying 版權(&P) -menutrans &Sponsor/Register 贊助/註冊(&S) +menutrans &Sponsor 贊助(&S) menutrans O&rphans 拯救孤兒(&R) " ------------------------------------------------------------------------ menutrans &Version 程式版本資訊(&V) diff --git a/runtime/macros/less.sh b/runtime/macros/less.sh index e29958f7..32b59189 100755 --- a/runtime/macros/less.sh +++ b/runtime/macros/less.sh @@ -2,25 +2,15 @@ # Shell script to start Vim with less.vim. # Read stdin if no arguments were given and stdin was redirected. -if test -t 1; then - if test $# = 0; then - if test -t 0; then - echo "Missing filename" 1>&2 - exit - fi - vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' - - else - vim --cmd 'let no_plugin_maps = 1' -c 'runtime! macros/less.vim' "$@" - fi -else - # Output is not a terminal, cat arguments or stdin - if test $# = 0; then - if test -t 0; then - echo "Missing filename" 1>&2 - exit - fi - cat - else - cat "$@" - fi +if [ $# -eq 0 ] && [ -t 0 ]; then + echo "$(basename "$0"): No input." 1>&2 + exit +fi + +if [ -t 1 ]; then + [ $# -eq 0 ] && set -- "-" + [ "$*" != "-" ] && set -- -- "$@" + exec vim --cmd 'let no_plugin_maps=1' -c 'runtime! macros/less.vim' --not-a-term "$@" +else # Output is not a terminal. + exec cat -- "$@" fi diff --git a/runtime/menu.vim b/runtime/menu.vim index edd628f4..6a1d947d 100644 --- a/runtime/menu.vim +++ b/runtime/menu.vim @@ -2,7 +2,7 @@ " You can also use this as a start for your own set of menus. " " Maintainer: The Vim Project -" Last Change: 2025 Aug 10 +" Last Change: 2026 Jan 19 " Former Maintainer: Bram Moolenaar " Note that ":an" (short for ":anoremenu") is often used to make a menu work @@ -84,7 +84,7 @@ an 9999.40 &Help.&Find\.\.\. :call Helpfind() an 9999.45 &Help.-sep1- an 9999.50 &Help.&Credits :help credits an 9999.60 &Help.Co&pying :help copying -an 9999.70 &Help.&Sponsor/Register :help sponsor +an 9999.70 &Help.&Sponsor :help sponsor an 9999.70 &Help.O&rphans :help kcc an 9999.75 &Help.-sep2- an 9999.80 &Help.&Version :version @@ -98,7 +98,7 @@ if exists(':tlmenu') tlnoremenu 9999.45 &Help.-sep1- tlnoremenu 9999.50 &Help.&Credits :help credits tlnoremenu 9999.60 &Help.Co&pying :help copying - tlnoremenu 9999.70 &Help.&Sponsor/Register :help sponsor + tlnoremenu 9999.70 &Help.&Sponsor :help sponsor tlnoremenu 9999.70 &Help.O&rphans :help kcc tlnoremenu 9999.75 &Help.-sep2- tlnoremenu 9999.80 &Help.&Version :version @@ -175,7 +175,7 @@ vnoremenu 20.340 &Edit.Cu&t"+x "+x vnoremenu 20.350 &Edit.&Copy"+y "+y cnoremenu 20.350 &Edit.&Copy"+y if exists(':tlmenu') - tlnoremenu 20.350 &Edit.&Copy"+y : + tlnoremenu 20.350 &Edit.&Copy"+y : endif nnoremenu 20.360 &Edit.&Paste"+gP "+gP cnoremenu &Edit.&Paste"+gP + @@ -748,14 +748,14 @@ def s:BMShow() # Remove old menu, if it exists; keep one entry to avoid a torn off menu to # disappear. Use try/catch to avoid setting v:errmsg - try - unmenu &Buffers - catch + try + unmenu &Buffers + catch endtry exe 'noremenu ' .. g:bmenu_priority .. ".1 &Buffers.Dummy l" - try - unmenu! &Buffers - catch + try + unmenu! &Buffers + catch endtry # create new menu diff --git a/runtime/optwin.vim b/runtime/optwin.vim index 972c7747..e20fda26 100644 --- a/runtime/optwin.vim +++ b/runtime/optwin.vim @@ -1,7 +1,7 @@ " These commands create the option window. " " Maintainer: The Vim Project -" Last Change: 2025 Oct 07 +" Last Change: 2026 Mar 11 " Former Maintainer: Bram Moolenaar " If there already is an option window, jump to that one. @@ -385,6 +385,12 @@ call AddOption("window", gettext("number of lines to scroll for CTRL-F and call append("$", " \tset window=" . &window) call AddOption("lazyredraw", gettext("don't redraw while executing macros")) call BinOptionG("lz", &lz) +if has("unix") + call AddOption("termresize", gettext("configure method of receiving terminal size changes")) + call BinOptionG("trz", &trz) +endif +call AddOption("termsync", gettext("enable terminal sync mode")) +call BinOptionG("tsy", &tsy) if has("reltime") call AddOption("redrawtime", gettext("timeout for 'hlsearch' and :match highlighting in msec")) call append("$", " \tset rdt=" . &rdt) @@ -445,6 +451,9 @@ call BinOptionG("hls", &hls) call AddOption("wincolor", gettext("highlight group to use for the window")) call append("$", "\t" .. s:local_to_window) call OptionL("wcr") +call AddOption("winhighlight", gettext("highlight group mappings for the window")) +call append("$", "\t" .. s:local_to_window) +call OptionL("whl") if has("termguicolors") call AddOption("termguicolors", gettext("use GUI colors for the terminal")) call BinOptionG("tgc", &tgc) @@ -490,8 +499,10 @@ call append("$", " \tset ls=" . &ls) if has("statusline") call AddOption("statusline", gettext("alternate format to be used for a status line")) call OptionG("stl", &stl) + call append("$", "\t" .. s:local_to_window) + call AddOption("statuslineopt", gettext("optional settings for the status line")) + call OptionG("stlo", &stlo) endif -call append("$", "\t" .. s:local_to_window) call AddOption("equalalways", gettext("make all windows the same size when adding/removing windows")) call BinOptionG("ea", &ea) call AddOption("eadirection", gettext("in which direction 'equalalways' works: \"ver\", \"hor\" or \"both\"")) @@ -860,6 +871,8 @@ call append("$", " \tset bs=" . &bs) call AddOption("comments", gettext("definition of what comment lines look like")) call append("$", "\t" .. s:local_to_buffer) call OptionL("com") +call AddOption("commentstring", gettext("template for comments; used to put the marker in")) +call OptionL("cms") call AddOption("formatoptions", gettext("list of flags that tell how automatic formatting works")) call append("$", "\t" .. s:local_to_buffer) call OptionL("fo") @@ -888,8 +901,6 @@ if has("insert_expand") call OptionL("cot") call AddOption("completeitemalign", gettext(" \npopup menu item align order")) call OptionG("cia", &cia) - call AddOption("completefuzzycollect", gettext(" \nuse fuzzy collection for specific completion modes")) - call OptionL("cfc") if exists("+completepopup") call AddOption("completepopup", gettext("options for the Insert mode completion info popup")) call OptionG("cpp", &cpp) @@ -1039,8 +1050,6 @@ if has("folding") call AddOption("foldminlines", gettext("minimum number of screen lines for a fold to be closed")) call append("$", "\t" .. s:local_to_window) call OptionL("fml") - call AddOption("commentstring", gettext("template for comments; used to put the marker in")) - call OptionL("cms") call AddOption("foldmethod", gettext("folding type: \"manual\", \"indent\", \"expr\", \"marker\",\n\"syntax\" or \"diff\"")) call append("$", "\t" .. s:local_to_window) call OptionL("fdm") @@ -1287,8 +1296,6 @@ call AddOption("isfname", gettext("specifies the characters in a file name" call OptionG("isf", &isf) call AddOption("isident", gettext("specifies the characters in an identifier")) call OptionG("isi", &isi) -call AddOption("isexpand", gettext("defines trigger strings for complete_match()")) -call append("$", "\t" .. s:local_to_buffer) call AddOption("iskeyword", gettext("specifies the characters in a keyword")) call append("$", "\t" .. s:local_to_buffer) call OptionL("isk") diff --git a/runtime/pack/dist/opt/editorconfig/LICENSE.PSF b/runtime/pack/dist/opt/editorconfig/LICENSE.PSF old mode 100755 new mode 100644 diff --git a/runtime/pack/dist/opt/helpcurwin/autoload/helpcurwin.vim b/runtime/pack/dist/opt/helpcurwin/autoload/helpcurwin.vim new file mode 100644 index 00000000..52a2d4f7 --- /dev/null +++ b/runtime/pack/dist/opt/helpcurwin/autoload/helpcurwin.vim @@ -0,0 +1,42 @@ +vim9script + +# Open Vim help on {subject} in the current window (rather than a new split) +# +# Maintainer: The Vim Project +# Last change: 2025 Dec 02 + +export def Open(subject: string): void + + const HELPCURWIN: func = (): string => { + if !getcompletion(subject, 'help')->empty() || subject->empty() + if &buftype != 'help' + execute 'silent noautocmd keepalt enew' + setlocal buftype=help noswapfile + endif + endif + return $'help {subject}' + } + + var contmod: bool = true + if &modified + echohl MoreMsg + echo $'Buffer {bufname()} is modified - continue? (y/n)' + echohl None + contmod = (getcharstr() == 'y') + endif + if contmod + try + execute HELPCURWIN() + catch + echohl Error + # {subject} invalid - Echo 'helpcurwin: E149:' (omit 'Vim(help):') + echo $'helpcurwin: {v:exception->substitute("^[^:]\+:", "", "")}' + echohl None + endtry + else + echo $'Aborted opening in current window, :help {subject}' + endif + +enddef + +# vim: ts=8 sts=2 sw=2 et diff --git a/runtime/pack/dist/opt/helpcurwin/doc/helpcurwin.txt b/runtime/pack/dist/opt/helpcurwin/doc/helpcurwin.txt new file mode 100644 index 00000000..2bca8d03 --- /dev/null +++ b/runtime/pack/dist/opt/helpcurwin/doc/helpcurwin.txt @@ -0,0 +1,59 @@ +*helpcurwin.txt* For Vim version 9.1. Last change: 2025 Dec 02 + +The helpcurwin optional package enables opening help in the current window. + +1. :HelpCurwin |helpcurwin-command| +2. helpcurwin#Open() |helpcurwin-function| +3. HelpCurwin; |helpcurwin-mapping| + + +============================================================================== +1. :HelpCurwin *:HelpCurwin* *helpcurwin-command* + +:HelpCurwin Use the current window to display the help file, + |help.txt| in read-only mode. It leaves any other + windows as-is (including when there is another + help window(s)). + +:HelpCurwin {subject} Like ":HelpCurwin" but, additionally open the + applicable help file at the tag {subject}. + For example: > + + :HelpCurwin version9.2 +< + It should otherwise behave like :help {subject}. + +You may also want to save typing with a command line abbreviation, +for example: >vi + + cnoreabbrev hc getcmdtype() == ":" && + \ getcmdline() == 'hc' ? 'HelpCurwin' : 'hc' +< + +============================================================================== +2. helpcurwin#Open() *helpcurwin-function* + +The underlying `:def` function may also be used, for example: >vim + + :vim9cmd helpcurwin#Open('version9.2') +< +This may be useful from other scripts where you want to bring up help on +{subject} in the current window. + + +============================================================================== +3. HelpCurwin; *helpcurwin-mapping* + +There may be times when you want to get the help for a WORD, such as when it +is in a Vim9 script. If you want to open it in the same window, you can map +HelpCurwin; to keys of your choosing to enable that. For example: >vim9 + + nnoremap hc HelpCurwin; + +Once sourced (in this instance, when hc is typed), the applicable +help file will be opened in the current window at the tag for (that +is, the |WORD| under the cursor), if it exists. + + +============================================================================== + vim:tw=78:ts=8:noet:ft=help:norl: diff --git a/runtime/pack/dist/opt/helpcurwin/doc/tags b/runtime/pack/dist/opt/helpcurwin/doc/tags new file mode 100644 index 00000000..c552ad5f --- /dev/null +++ b/runtime/pack/dist/opt/helpcurwin/doc/tags @@ -0,0 +1,5 @@ +:HelpCurwin helpcurwin.txt /*:HelpCurwin* +helpcurwin-command helpcurwin.txt /*helpcurwin-command* +helpcurwin-function helpcurwin.txt /*helpcurwin-function* +helpcurwin-mapping helpcurwin.txt /*helpcurwin-mapping* +helpcurwin.txt helpcurwin.txt /*helpcurwin.txt* diff --git a/runtime/pack/dist/opt/helpcurwin/plugin/helpcurwin.vim b/runtime/pack/dist/opt/helpcurwin/plugin/helpcurwin.vim new file mode 100644 index 00000000..e9960954 --- /dev/null +++ b/runtime/pack/dist/opt/helpcurwin/plugin/helpcurwin.vim @@ -0,0 +1,14 @@ +vim9script + +# Open Vim help on {subject} in the current window (rather than a new split) +# +# Maintainer: The Vim Project +# Last change: 2026 Jan 29 + +import autoload '../autoload/helpcurwin.vim' + +command -bar -nargs=? -complete=help HelpCurwin helpcurwin.Open() + +nnoremap HelpCurwin; helpcurwin.Open(expand('')) + +# vim: ts=8 sts=2 sw=2 et diff --git a/runtime/pack/dist/opt/matchit/autoload/matchit.vim b/runtime/pack/dist/opt/matchit/autoload/matchit.vim index aa977488..1e660ffd 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: May 20, 2024 +" Last Change: Jan 09, 2026 " Neovim does not support scriptversion if has("vimscript-4") @@ -69,6 +69,25 @@ function matchit#Match_wrapper(word, forward, mode) range let startpos = [line("."), col(".")] endif + " Check for custom match function hook + if exists("b:match_function") + try + let result = call(b:match_function, [a:forward]) + if !empty(result) + call cursor(result) + return s:CleanUp(restore_options, a:mode, startpos) + endif + catch /.*/ + if exists("b:match_debug") + echohl WarningMsg + echom 'matchit: b:match_function error: ' .. v:exception + echohl NONE + endif + return s:CleanUp(restore_options, a:mode, startpos) + endtry + " Empty result: fall through to regular matching + endif + " First step: if not already done, set the script variables " s:do_BR flag for whether there are backrefs " s:pat parsed version of b:match_words @@ -91,7 +110,7 @@ function matchit#Match_wrapper(word, forward, mode) range let default = escape(&mps, '[$^.*~\\/?]') .. (strlen(&mps) ? "," : "") .. \ '\/\*:\*\/,#\s*if\%(n\=def\)\=:#\s*else\>:#\s*elif\%(n\=def\)\=\>:#\s*endif\>' " s:all = pattern with all the keywords - let match_words = match_words .. (strlen(match_words) ? "," : "") .. default + let match_words = s:Append(match_words, default) let s:last_words = match_words if match_words !~ s:notslash .. '\\\d' let s:do_BR = 0 @@ -101,8 +120,8 @@ function matchit#Match_wrapper(word, forward, mode) range let s:pat = s:ParseWords(match_words) endif let s:all = substitute(s:pat, s:notslash .. '\zs[,:]\+', '\\|', 'g') - " un-escape \, to , - let s:all = substitute(s:all, '\\,', ',', 'g') + " un-escape \, and \: to , and : + let s:all = substitute(s:all, s:notslash .. '\zs\\\(:\|,\)', '\1', 'g') " Just in case there are too many '\(...)' groups inside the pattern, make " sure to use \%(...) groups, so that error E872 can be avoided let s:all = substitute(s:all, '\\(', '\\%(', 'g') @@ -341,6 +360,18 @@ fun! s:InsertRefs(groupBR, prefix, group, suffix, matchline) return ini .. ":" .. tailBR endfun +" String append item2 to item and add ',' in between items +fun! s:Append(item, item2) + if a:item == '' + return a:item2 + endif + " there is already a trailing comma, don't add another one + if a:item[-1:] == ',' + return a:item .. a:item2 + endif + return a:item .. ',' .. a:item2 +endfun + " Input a comma-separated list of groups with backrefs, such as " a:groups = '\(foo\):end\1,\(bar\):end\1' " and return a comma-separated list of groups with backrefs replaced: @@ -538,8 +569,8 @@ fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...) else let currpat = substitute(current, s:notslash .. a:branch, '\\|', 'g') endif - " un-escape \, to , - let currpat = substitute(currpat, '\\,', ',', 'g') + " un-escape \, and \: to , and : + let currpat = substitute(currpat, s:notslash .. '\zs\\\(:\|,\)', '\1', 'g') while a:string !~ a:prefix .. currpat .. a:suffix let tail = strpart(tail, i) let i = matchend(tail, s:notslash .. a:comma) @@ -552,6 +583,8 @@ fun! s:Choose(patterns, string, comma, branch, prefix, suffix, ...) else let currpat = substitute(current, s:notslash .. a:branch, '\\|', 'g') endif + " un-escape \, and \: to , and : + let currpat = substitute(currpat, s:notslash .. '\zs\\\(:\|,\)', '\1', 'g') if a:0 let alttail = strpart(alttail, j) let j = matchend(alttail, s:notslash .. a:comma) @@ -621,7 +654,7 @@ fun! matchit#MultiMatch(spflag, mode) let default = escape(&mps, '[$^.*~\\/?]') .. (strlen(&mps) ? "," : "") .. \ '\/\*:\*\/,#\s*if\%(n\=def\)\=:#\s*else\>:#\s*elif\>:#\s*endif\>' let s:last_mps = &mps - let match_words = match_words .. (strlen(match_words) ? "," : "") .. default + let match_words = s:Append(match_words, default) let s:last_words = match_words if match_words !~ s:notslash .. '\\\d' let s:do_BR = 0 diff --git a/runtime/pack/dist/opt/matchit/doc/matchit.txt b/runtime/pack/dist/opt/matchit/doc/matchit.txt index ba748540..e82bacde 100644 --- a/runtime/pack/dist/opt/matchit/doc/matchit.txt +++ b/runtime/pack/dist/opt/matchit/doc/matchit.txt @@ -1,13 +1,7 @@ -*matchit.txt* Extended "%" matching +*matchit.txt* Extended "%" matching Last change: 2026 Jan 06 -For instructions on installing this file, type - `:help matchit-install` -inside Vim. + VIM REFERENCE MANUAL by Benji Fisher et al -For Vim version 9.1. Last change: 2024 May 20 - - - VIM REFERENCE MANUAL by Benji Fisher et al *matchit* *matchit.vim* @@ -174,7 +168,7 @@ defined automatically. 2.1 Temporarily disable the matchit plugin *matchit-disable* *:MatchDisable* -To temporarily disable the matchit plugin, after it hat been loaded, +To temporarily disable the matchit plugin, after it has been loaded, execute this command: > :MatchDisable @@ -259,6 +253,45 @@ Examples: See the $VIMRUNTIME/ftplugin/vim.vim for an example that uses both syntax and a regular expression. + *b:match_function* +If b:match_function is defined, matchit.vim will first call this function to +perform matching. This is useful for languages with an indentation-based block +structure (such as Python) or other complex matching requirements that cannot +be expressed with regular expression patterns. + +The function should accept one argument: + forward - 1 for forward search (% command) + 0 for backward search (g% command) + +The function should return a list with one of these values: + [line, col] - Match found at the specified position + [] - No match found; fall through to regular matching + (|b:match_words|, matchpairs, etc.) + +The cursor position is not changed by the function; matchit handles cursor +movement based on the returned position. + +If the function throws an error, matchit gives up and doesn't continue. +Enable |b:match_debug| to see error messages from custom match functions. + +Python example (simplified): > + let s:keywords = {'if': 'elif\|else', 'elif': 'elif\|else'} + + function! s:PythonMatch(forward) abort + let keyword = matchstr(getline('.'), '^\s*\zs\w\+') + let pattern = get(s:keywords, keyword, '') + if empty(pattern) | return [] | endif + + " Forward-only. Backwards left as an exercise for the reader. + let [lnum, col] = searchpos('^\s*\%(' . pattern . '\)\>', 'nW' 0, 0, + \ 'indent(".") != ' . indent('.')) + return lnum > 0 ? [lnum, col] : [] + endfunction + + let b:match_function = function('s:PythonMatch') +< +See |matchit-newlang| below for more details on supporting new languages. + ============================================================================== 4. Supporting a New Language *matchit-newlang* *b:match_words* @@ -270,9 +303,9 @@ Vim's |regular-expression|s. The format for |b:match_words| is similar to that of the 'matchpairs' option: it is a comma (,)-separated list of groups; each group is a colon(:)-separated -list of patterns (regular expressions). Commas and backslashes that are part -of a pattern should be escaped with backslashes ('\:' and '\,'). It is OK to -have only one group; the effect is undefined if a group has only one pattern. +list of patterns (regular expressions). Commas and colons that are part of a +pattern should be escaped with backslashes ('\:' and '\,'). It is OK to have +only one group; the effect is undefined if a group has only one pattern. A simple example is > :let b:match_words = '\:\,' \ . '\:\:\:\' @@ -315,7 +348,7 @@ expression > if keywords are only recognized after the start of a line or after a semicolon (;), with optional white space. - *matchit-backref* *matchit-\1* + *matchit-backref* In any group, the expressions |\1|, |\2|, ..., |\9| refer to parts of the INITIAL pattern enclosed in |\(|escaped parentheses|\)|. These are referred to as back references, or backrefs. For example, > diff --git a/runtime/pack/dist/opt/matchit/doc/tags b/runtime/pack/dist/opt/matchit/doc/tags index e684fb11..008c5686 100644 --- a/runtime/pack/dist/opt/matchit/doc/tags +++ b/runtime/pack/dist/opt/matchit/doc/tags @@ -6,6 +6,7 @@ MatchError matchit.txt /*MatchError* ]% matchit.txt /*]%* b:match_col matchit.txt /*b:match_col* b:match_debug matchit.txt /*b:match_debug* +b:match_function matchit.txt /*b:match_function* b:match_ignorecase matchit.txt /*b:match_ignorecase* b:match_ini matchit.txt /*b:match_ini* b:match_iniBR matchit.txt /*b:match_iniBR* @@ -20,7 +21,6 @@ b:match_words matchit.txt /*b:match_words* g% matchit.txt /*g%* matchit matchit.txt /*matchit* matchit-% matchit.txt /*matchit-%* -matchit-\1 matchit.txt /*matchit-\\1* matchit-activate matchit.txt /*matchit-activate* matchit-backref matchit.txt /*matchit-backref* matchit-bugs matchit.txt /*matchit-bugs* diff --git a/runtime/pack/dist/opt/matchit/plugin/matchit.vim b/runtime/pack/dist/opt/matchit/plugin/matchit.vim index 08fee096..947f5302 100644 --- a/runtime/pack/dist/opt/matchit/plugin/matchit.vim +++ b/runtime/pack/dist/opt/matchit/plugin/matchit.vim @@ -1,6 +1,6 @@ " matchit.vim: (global plugin) Extended "%" matching " Maintainer: Christian Brabandt -" Version: 1.20 +" Version: 1.21 " Last Change: 2024 May 20 " Repository: https://github.com/chrisbra/matchit " Previous URL:http://www.vim.org/script.php?script_id=39 diff --git a/runtime/pack/dist/opt/netrw/README.md b/runtime/pack/dist/opt/netrw/README.md index ecd97f1e..4b139f62 100644 --- a/runtime/pack/dist/opt/netrw/README.md +++ b/runtime/pack/dist/opt/netrw/README.md @@ -11,7 +11,7 @@ upstream for distribution with Vim. # License -To see License informations see the LICENSE.txt file included in this +To see License information see the LICENSE.txt file included in this repository. # Credits @@ -30,7 +30,7 @@ Changes made to `autoload/netrw.vim`: - 2024 May 13 by Vim Project: prefer scp over pscp - 2024 Jun 04 by Vim Project: set bufhidden if buffer changed, nohidden is set and buffer shall be switched (#14915) - 2024 Jun 13 by Vim Project: glob() on Windows fails when a directory name contains [] (#14952) -- 2024 Jun 23 by Vim Project: save ad restore registers when liststyle = WIDELIST (#15077, #15114) +- 2024 Jun 23 by Vim Project: save and restore registers when liststyle = WIDELIST (#15077, #15114) - 2024 Jul 22 by Vim Project: avoid endless recursion (#15318) - 2024 Jul 23 by Vim Project: escape filename before trying to delete it (#15330) - 2024 Jul 30 by Vim Project: handle mark-copy to same target directory (#12112) @@ -505,7 +505,7 @@ General changes made to netrw: Dec 24, 2013 * (esquifit) asked that netrw allow the /cygdrive prefix be a user-alterable parameter. - Jan 02, 2014 * Fixed a problem with netrw-based ballon + Jan 02, 2014 * Fixed a problem with netrw-based balloon evaluation (ie. netrw#NetrwBaloonHelp() not having been loaded error messages) Jan 03, 2014 * Fixed a problem with tree listings diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw.vim b/runtime/pack/dist/opt/netrw/autoload/netrw.vim index 37adbf92..e31b34cb 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrw.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrw.vim @@ -12,6 +12,16 @@ " 2025 Oct 01 by Vim Project fix navigate to parent folder #18464 " 2025 Oct 26 by Vim Project fix parsing of remote user names #18611 " 2025 Oct 27 by Vim Project align comment after #18611 +" 2025 Nov 01 by Vim Project fix NetrwChgPerm #18674 +" 2025 Nov 13 by Vim Project don't wipe unnamed buffers #18740 +" 2025 Nov 18 by Vim Project use UNC paths when using scp and Windows paths #18764 +" 2025 Nov 28 by Vim Project fix undefined variable in *NetrwMenu #18829 +" 2025 Dec 26 by Vim Project fix use of g:netrw_cygwin #19015 +" 2026 Jan 19 by Vim Project do not create swapfiles #18854 +" 2026 Feb 15 by Vim Project fix global variable initialization for MS-Windows #19287 +" 2026 Feb 21 by Vim Project better absolute path detection on MS-Windows #19477 +" 2026 Feb 27 by Vim Project Make the hostname validation more strict +" 2026 Mar 01 by Vim Project include portnumber in hostname checking #19533 " Copyright: Copyright (C) 2016 Charles E. Campbell {{{1 " Permission is hereby granted to use and distribute this code, " with or without modifications, provided that this copyright @@ -209,7 +219,7 @@ call s:NetrwInit("g:netrw_dirhistmax" , 10) call s:NetrwInit("g:netrw_fastbrowse" , 1) call s:NetrwInit("g:netrw_ftp_browse_reject", '^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$') if !exists("g:netrw_ftp_list_cmd") - if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin) + if has("unix") || g:netrw_cygwin let g:netrw_ftp_list_cmd = "ls -lF" let g:netrw_ftp_timelist_cmd = "ls -tlF" let g:netrw_ftp_sizelist_cmd = "ls -slF" @@ -259,8 +269,8 @@ if !exists("g:netrw_localcopycmd") let g:netrw_localcopycmdopt = '' if has("win32") && !g:netrw_cygwin - let g:netrw_localcopycmd = expand("$COMSPEC", v:true) - let g:netrw_localcopycmdopt = '/c copy' + let g:netrw_localcopycmd = $COMSPEC + let g:netrw_localcopycmdopt = ' /c copy' endif endif @@ -269,30 +279,31 @@ if !exists("g:netrw_localcopydircmd") let g:netrw_localcopydircmdopt = '-R' if has("win32") && !g:netrw_cygwin - let g:netrw_localcopydircmd = "cp" - call s:NetrwInit("g:netrw_localcopydircmdopt", "-R") + let g:netrw_localcopydircmd = "xcopy" + let g:netrw_localcopydircmdopt = " /E /I /H /C /Y" endif endif -if has("win32") - if g:netrw_cygwin - call s:NetrwInit("g:netrw_localmkdir","mkdir") +if !exists("g:netrw_localmkdir") + if has("win32") + if g:netrw_cygwin + let g:netrw_localmkdir= "mkdir" + else + let g:netrw_localmkdir = $COMSPEC + let g:netrw_localmkdiropt= " /c mkdir" + endif else - call s:NetrwInit("g:netrw_localmkdir",expand("$COMSPEC", v:true)) - call s:NetrwInit("g:netrw_localmkdiropt"," /c mkdir") + let g:netrw_localmkdir= "mkdir" endif -else - call s:NetrwInit("g:netrw_localmkdir","mkdir") endif -call s:NetrwInit("g:netrw_remote_mkdir","mkdir") if !exists("g:netrw_localmovecmd") if has("win32") if g:netrw_cygwin let g:netrw_localmovecmd= "mv" else - let g:netrw_localmovecmd = expand("$COMSPEC", v:true) - call s:NetrwInit("g:netrw_localmovecmdopt"," /c move") + let g:netrw_localmovecmd = $COMSPEC + let g:netrw_localmovecmdopt= " /c move" endif elseif has("unix") || has("macunix") let g:netrw_localmovecmd= "mv" @@ -316,7 +327,7 @@ call s:NetrwInit("g:netrw_menu" , 1) call s:NetrwInit("g:netrw_mkdir_cmd" , g:netrw_ssh_cmd." USEPORT HOSTNAME mkdir") call s:NetrwInit("g:netrw_mousemaps" , (exists("+mouse") && &mouse =~# '[anh]')) call s:NetrwInit("g:netrw_retmap" , 0) -if has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin) +if has("unix") || g:netrw_cygwin call s:NetrwInit("g:netrw_chgperm" , "chmod PERM FILENAME") elseif has("win32") call s:NetrwInit("g:netrw_chgperm" , "cacls FILENAME /e /p PERM") @@ -438,7 +449,7 @@ function netrw#Explore(indx,dosplit,style,...) " record current directory let curdir = simplify(b:netrw_curdir) - if !exists("g:netrw_cygwin") && has("win32") + if !g:netrw_cygwin && has("win32") let curdir= substitute(curdir,'\','/','g') endif let curfiledir = substitute(expand("%:p"),'^\(.*[/\\]\)[^/\\]*$','\1','e') @@ -516,7 +527,7 @@ function netrw#Explore(indx,dosplit,style,...) NetrwKeepj norm! 0 if a:0 > 0 - if a:1 =~ '^\~' && (has("unix") || (exists("g:netrw_cygwin") && g:netrw_cygwin)) + if a:1 =~ '^\~' && (has("unix") || g:netrw_cygwin) let dirname= simplify(substitute(a:1,'\~',expand("$HOME"),'')) elseif a:1 == '.' let dirname= simplify(exists("b:netrw_curdir")? b:netrw_curdir : getcwd()) @@ -974,7 +985,7 @@ function netrw#Obtain(islocal,fname,...) " obtain a file from local b:netrw_curdir to (local) tgtdir if exists("b:netrw_curdir") && getcwd() != b:netrw_curdir let topath = netrw#fs#ComposePath(tgtdir,"") - if has("win32") + if has("win32") && !g:netrw_cygwin " transfer files one at time for fname in fnamelist call system(g:netrw_localcopycmd.g:netrw_localcopycmdopt." ".netrw#os#Escape(fname)." ".netrw#os#Escape(topath)) @@ -1699,10 +1710,10 @@ function netrw#NetRead(mode,...) else let useport= "" endif - " 'C' in 'C:\path\to\file' is handled as hostname on windows. + " Using UNC notation in windows to get a unix like path. " This is workaround to avoid mis-handle windows local-path: if g:netrw_scp_cmd =~ '^scp' && has("win32") - let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '/\1/\2', '') + let tmpfile_get = substitute(tr(tmpfile, '\', '/'), '^\(\a\):[/\\]\(.*\)$', '//' .. $COMPUTERNAME .. '/\1$/\2', '') else let tmpfile_get = tmpfile endif @@ -2582,13 +2593,29 @@ endfunction " s:NetrwValidateHostname: Validate that the hostname is valid {{{2 " Input: -" hostname +" hostname, may include an optional username and port number, e.g. +" user@hostname:port +" allow a alphanumeric hostname or an IPv(4/6) address " Output: " true if g:netrw_machine is valid according to RFC1123 #Section 2 function s:NetrwValidateHostname(hostname) - " RFC1123#section-2 mandates, a valid hostname starts with letters or digits - " so reject everyhing else - return a:hostname =~? '^[a-z0-9]' + " Username: + let user_pat = '\%([a-zA-Z0-9._-]\+@\)\?' + " Hostname: 1-64 chars, alphanumeric/dots/hyphens. + " No underscores. No leading/trailing dots/hyphens. + let host_pat = '[a-zA-Z0-9]\%([-a-zA-Z0-9.]\{0,62}[a-zA-Z0-9]\)\?' + " Port: 16 bit unsigned integer + let port_pat = '\%(:\d\{1,5\}\)\?$' + + " IPv4: 1-3 digits separated by dots + let ipv4_pat = '\%(\d\{1,3}\.\)\{3\}\d\{1,3\}' + + " IPv6: Hex, colons, and optional brackets + let ipv6_pat = '\[\?\%([a-fA-F0-9:]\{2,}\)\+\]\?' + + return a:hostname =~? '^'.user_pat.host_pat.port_pat || + \ a:hostname =~? '^'.user_pat.ipv4_pat.port_pat || + \ a:hostname =~? '^'.user_pat.ipv6_pat.port_pat endfunction " NetUserPass: set username and password for subsequent ftp transfer {{{2 @@ -3230,8 +3257,8 @@ function s:NetrwFile(fname) let b:netrw_curdir= getcwd() endif - if !exists("g:netrw_cygwin") && has("win32") - if fname =~ '^\' || fname =~ '^\a:\' + if !g:netrw_cygwin && has("win32") + if isabsolutepath(fname) " windows, but full path given let ret= fname else @@ -4211,11 +4238,12 @@ function s:NetrwChgPerm(islocal,curdir) call inputsave() let newperm= input("Enter new permission: ") call inputrestore() - let chgperm= substitute(g:netrw_chgperm,'\',netrw#os#Escape(expand("")),'') + let fullpath = fnamemodify(netrw#fs#PathJoin(a:curdir, expand("")), ':p') + let chgperm= substitute(g:netrw_chgperm,'\',netrw#os#Escape(fullpath),'') let chgperm= substitute(chgperm,'\',netrw#os#Escape(newperm),'') call system(chgperm) if v:shell_error != 0 - NetrwKeepj call netrw#ErrorMsg(1,"changing permission on file<".expand("")."> seems to have failed",75) + NetrwKeepj call netrw#msg#Notify('WARNING', printf('changing permission on file<%s> seems to have failed', fullpath)) endif if a:islocal NetrwKeepj call s:NetrwRefresh(a:islocal,s:NetrwBrowseChgDir(a:islocal,'./',0)) @@ -4251,12 +4279,12 @@ endfunction " NetrwKeepj [keepalt] function s:NetrwEditFile(cmd,opt,fname) if exists("g:netrw_altfile") && g:netrw_altfile && &ft == "netrw" - exe "NetrwKeepj keepalt ".a:opt." ".a:cmd." ".fnameescape(a:fname) + exe "NetrwKeepj noswapfile keepalt ".a:opt." ".a:cmd." ".fnameescape(a:fname) else if a:cmd =~# 'e\%[new]!' && !&hidden && getbufvar(bufname('%'), '&modified', 0) call setbufvar(bufname('%'), '&bufhidden', 'hide') endif - exe "NetrwKeepj ".a:opt." ".a:cmd." ".fnameescape(a:fname) + exe "NetrwKeepj noswapfile ".a:opt." ".a:cmd." ".fnameescape(a:fname) endif endfunction @@ -4591,7 +4619,7 @@ function s:NetrwServerEdit(islocal,fname) endif else - call netrw#ErrorMsg(s:ERROR,"you need a gui-capable vim and client-server to use ",98) + call netrw#msg#Notify('ERROR', 'you need a gui-capable vim and client-server to use ') endif endfunction @@ -4724,38 +4752,16 @@ function s:NetrwMakeDir(usrhost) " requested new local directory is neither a pre-existing file or " directory, so make it! - if exists("*mkdir") - if has("unix") - call mkdir(fullnewdir,"p",xor(0777, system("umask"))) - else - call mkdir(fullnewdir,"p") - endif + if has("unix") + call mkdir(fullnewdir,"p",xor(0777, system("umask"))) else - let netrw_origdir= netrw#fs#Cwd(1) - if s:NetrwLcd(b:netrw_curdir) - return - endif - call netrw#os#Execute("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.netrw#os#Escape(newdirname,1)) - if v:shell_error != 0 - let @@= ykeep - call netrw#msg#Notify('ERROR', printf('consider setting g:netrw_localmkdir<%s> to something that works', g:netrw_localmkdir)) - return - endif - if !g:netrw_keepdir - if s:NetrwLcd(netrw_origdir) - return - endif - endif + call mkdir(fullnewdir,"p") endif - if v:shell_error == 0 - " refresh listing - let svpos= winsaveview() - call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./',0)) - call winrestview(svpos) - else - call netrw#msg#Notify('ERROR', printf('unable to make directory<%s>', newdirname)) - endif + " on success refresh listing + let svpos= winsaveview() + call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./',0)) + call winrestview(svpos) elseif !exists("b:netrw_method") || b:netrw_method == 4 " Remote mkdir: using ssh @@ -5339,17 +5345,14 @@ function s:NetrwMarkFileCopy(islocal,...) let curdir = s:NetrwGetCurdir(a:islocal) let curbufnr = bufnr("%") - if b:netrw_curdir !~ '/$' - if !exists("b:netrw_curdir") - let b:netrw_curdir= curdir - endif - let b:netrw_curdir= b:netrw_curdir."/" + if !exists("b:netrw_curdir") + let b:netrw_curdir= curdir endif " sanity check if !exists("s:netrwmarkfilelist_{curbufnr}") || empty(s:netrwmarkfilelist_{curbufnr}) call netrw#msg#Notify('ERROR', 'there are no marked files in this window (:help netrw-mf)') - return + return 0 endif if !exists("s:netrwmftgt") @@ -5357,7 +5360,7 @@ function s:NetrwMarkFileCopy(islocal,...) return 0 endif - if a:islocal && s:netrwmftgt_islocal + if a:islocal && s:netrwmftgt_islocal " Copy marked files, local directory to local directory if !executable(g:netrw_localcopycmd) call netrw#msg#Notify('ERROR', printf('g:netrw_localcopycmd<%s> not executable on your system, aborting', g:netrw_localcopycmd)) @@ -5365,69 +5368,85 @@ function s:NetrwMarkFileCopy(islocal,...) endif " copy marked files while within the same directory (ie. allow renaming) - if simplify(s:netrwmftgt) ==# simplify(b:netrw_curdir) - if len(s:netrwmarkfilelist_{bufnr('%')}) == 1 - " only one marked file - let args = netrw#os#Escape(b:netrw_curdir.s:netrwmarkfilelist_{bufnr('%')}[0]) - let oldname = s:netrwmarkfilelist_{bufnr('%')}[0] - elseif a:0 == 1 - " this happens when the next case was used to recursively call s:NetrwMarkFileCopy() - let args = netrw#os#Escape(b:netrw_curdir.a:1) - let oldname = a:1 - else - " copy multiple marked files inside the same directory - let s:recursive= 1 - for oldname in s:netrwmarkfilelist_{bufnr("%")} - let ret= s:NetrwMarkFileCopy(a:islocal,oldname) - if ret == 0 - break - endif - endfor - unlet s:recursive - call s:NetrwUnmarkList(curbufnr,curdir) - return ret - endif + if simplify(s:netrwmftgt."/") ==# simplify(b:netrw_curdir."/") + " copy multiple marked files inside the same directory + for oldname in s:netrwmarkfilelist_{curbufnr} + call inputsave() + let newname= input(printf("Copy %s to: ", oldname), oldname, 'file') + call inputrestore() - call inputsave() - let newname= input(printf("Copy %s to: ", oldname), oldname, 'file') - call inputrestore() + if empty(newname) + return 0 + endif - if empty(newname) - return 0 - endif + let tgt = netrw#fs#ComposePath(s:netrwmftgt, newname) + let oldname = netrw#fs#ComposePath(b:netrw_curdir, oldname) + if tgt ==# oldname + continue + endif - let args = netrw#os#Escape(oldname) - let tgt = netrw#os#Escape(s:netrwmftgt.'/'.newname) + let ret = filecopy(oldname, tgt) + if ret == v:false + call netrw#msg#Notify('ERROR', $'copy failed, unable to filecopy() <{oldname}> to <{tgt}>') + break + endif + endfor + call s:NetrwUnmarkList(curbufnr,curdir) + NetrwKeepj call s:NetrwRefreshDir(a:islocal, b:netrw_curdir) + return ret else - let args = join(map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),"netrw#os#Escape(b:netrw_curdir.\"/\".v:val)")) - let tgt = netrw#os#Escape(s:netrwmftgt) - endif - - if !g:netrw_cygwin && has("win32") - let args = substitute(args,'/','\\','g') - let tgt = substitute(tgt, '/','\\','g') + let args = [] + for arg in s:netrwmarkfilelist_{curbufnr} + call add(args, netrw#fs#ComposePath(b:netrw_curdir, arg)) + endfor + let tgt = s:netrwmftgt endif - if args =~ "'" |let args= substitute(args,"'\\(.*\\)'",'\1','')|endif - if tgt =~ "'" |let tgt = substitute(tgt ,"'\\(.*\\)'",'\1','')|endif - if args =~ '//'|let args= substitute(args,'//','/','g')|endif - if tgt =~ '//'|let tgt = substitute(tgt ,'//','/','g')|endif - let copycmd = g:netrw_localcopycmd let copycmdopt = g:netrw_localcopycmdopt - if isdirectory(s:NetrwFile(args)) + " on Windows, no builtin command supports copying multiple files at once + " (powershell's Copy-Item cmdlet does but requires , as file separator) + if len(s:netrwmarkfilelist_{curbufnr}) > 1 && has("win32") && !g:netrw_cygwin + " copy multiple marked files + for file in args + let dest = netrw#fs#ComposePath(tgt, fnamemodify(file, ':t')) + let ret = filecopy(file, dest) + if ret == v:false + call netrw#msg#Notify('ERROR', $'copy failed, unable to filecopy() <{file}> to <{dest}>') + break + endif + endfor + call s:NetrwUnmarkList(curbufnr,curdir) + NetrwKeepj call s:NetrwRefreshDir(a:islocal, b:netrw_curdir) + return ret + endif + + if len(args) == 1 && isdirectory(s:NetrwFile(args[0])) let copycmd = g:netrw_localcopydircmd let copycmdopt = g:netrw_localcopydircmdopt - if has('win32') && !g:netrw_cygwin + if has('win32') && g:netrw_localcopydircmd == "xcopy" " window's xcopy doesn't copy a directory to a target properly. Instead, it copies a directory's " contents to a target. One must append the source directory name to the target to get xcopy to " do the right thing. - let tgt= tgt.'\'.substitute(a:1,'^.*[\\/]','','') + let tgt = netrw#fs#ComposePath(tgt, fnamemodify(simplify(netrw#fs#PathJoin(args[0],".")),":t")) endif endif - call system(printf("%s %s '%s' '%s'", copycmd, copycmdopt, args, tgt)) + " prepare arguments for shell call + let args = join(map(args,'netrw#os#Escape(v:val)')) + let tgt = netrw#os#Escape(tgt) + + " enforce noshellslash for system calls + if exists('+shellslash') && &shellslash + for var in ['copycmd', 'args', 'tgt'] + let {var} = substitute({var}, '/', '\', 'g') + endfor + endif + + " shell call + let shell_cmd = printf("%s %s %s %s", copycmd, copycmdopt, args, tgt) + call system(shell_cmd) if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && g:netrw_keepdir call netrw#msg#Notify('ERROR', printf("copy failed; perhaps due to vim's current directory<%s> not matching netrw's (%s) (see :help netrw-cd)", getcwd(), b:netrw_curdir)) @@ -5439,11 +5458,11 @@ function s:NetrwMarkFileCopy(islocal,...) elseif a:islocal && !s:netrwmftgt_islocal " Copy marked files, local directory to remote directory - NetrwKeepj call s:NetrwUpload(s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt) + NetrwKeepj call s:NetrwUpload(s:netrwmarkfilelist_{curbufnr},s:netrwmftgt) elseif !a:islocal && s:netrwmftgt_islocal " Copy marked files, remote directory to local directory - NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},s:netrwmftgt) + NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{curbufnr},s:netrwmftgt) elseif !a:islocal && !s:netrwmftgt_islocal " Copy marked files, remote directory to remote directory @@ -5452,24 +5471,16 @@ function s:NetrwMarkFileCopy(islocal,...) if tmpdir !~ '/' let tmpdir= curdir."/".tmpdir endif - if exists("*mkdir") - call mkdir(tmpdir) - else - call netrw#os#Execute("sil! !".g:netrw_localmkdir.g:netrw_localmkdiropt.' '.netrw#os#Escape(tmpdir,1)) - if v:shell_error != 0 - call netrw#msg#Notify('WARNING', printf("consider setting g:netrw_localmkdir<%s> to something that works", g:netrw_localmkdir)) - return - endif - endif + call mkdir(tmpdir) if isdirectory(s:NetrwFile(tmpdir)) if s:NetrwLcd(tmpdir) return endif - NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{bufnr('%')},tmpdir) - let localfiles= map(deepcopy(s:netrwmarkfilelist_{bufnr('%')}),'substitute(v:val,"^.*/","","")') + NetrwKeepj call netrw#Obtain(a:islocal,s:netrwmarkfilelist_{curbufnr},tmpdir) + let localfiles= map(deepcopy(s:netrwmarkfilelist_{curbufnr}),'substitute(v:val,"^.*/","","")') NetrwKeepj call s:NetrwUpload(localfiles,s:netrwmftgt) if getcwd() == tmpdir - for fname in s:netrwmarkfilelist_{bufnr('%')} + for fname in s:netrwmarkfilelist_{curbufnr} call netrw#fs#Remove(fname) endfor if s:NetrwLcd(curdir) @@ -5491,18 +5502,13 @@ function s:NetrwMarkFileCopy(islocal,...) " ------- " remove markings from local buffer call s:NetrwUnmarkList(curbufnr,curdir) " remove markings from local buffer - if exists("s:recursive") - else - endif " see s:LocalFastBrowser() for g:netrw_fastbrowse interpretation (refreshing done for both slow and medium) if g:netrw_fastbrowse <= 1 NetrwKeepj call s:LocalBrowseRefresh() else " refresh local and targets for fast browsing - if !exists("s:recursive") - " remove markings from local buffer - NetrwKeepj call s:NetrwUnmarkList(curbufnr,curdir) - endif + " remove markings from local buffer + NetrwKeepj call s:NetrwUnmarkList(curbufnr,curdir) " refresh buffers if s:netrwmftgt_islocal @@ -5871,28 +5877,35 @@ function s:NetrwMarkFileMove(islocal) call netrw#msg#Notify('ERROR', printf('g:netrw_localmovecmd<%s> not executable on your system, aborting', g:netrw_localmovecmd)) return endif + let tgt = netrw#os#Escape(s:netrwmftgt) - if !g:netrw_cygwin && has("win32") - let tgt= substitute(tgt, '/','\\','g') - if g:netrw_localmovecmd =~ '\s' - let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') - let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') - let movecmd = netrw#fs#WinPath(movecmd).movecmdargs - else - let movecmd = netrw#fs#WinPath(g:netrw_localmovecmd) - endif + if has("win32") && !g:netrw_cygwin && g:netrw_localmovecmd =~ '\s' && g:netrw_localmovecmdopt == "" + let movecmd = substitute(g:netrw_localmovecmd,'\s.*$','','') + let movecmdargs = substitute(g:netrw_localmovecmd,'^.\{-}\(\s.*\)$','\1','') else - let movecmd = netrw#fs#WinPath(g:netrw_localmovecmd) + let movecmd = g:netrw_localmovecmd + let movecmdargs = g:netrw_localmovecmdopt endif - for fname in s:netrwmarkfilelist_{bufnr("%")} + + " build args list + let args = [] + for fname in s:netrwmarkfilelist_{curbufnr} if g:netrw_keepdir " Jul 19, 2022: fixing file move when g:netrw_keepdir is 1 - let fname= b:netrw_curdir."/".fname - endif - if !g:netrw_cygwin && has("win32") - let fname= substitute(fname,'/','\\','g') + let fname= netrw#fs#ComposePath(b:netrw_curdir, fname) endif - let ret= system(movecmd.g:netrw_localmovecmdopt." ".netrw#os#Escape(fname)." ".tgt) + call add(args, netrw#os#Escape(fname)) + endfor + + " enforce noshellslash for system calls + if exists('+shellslash') && &shellslash + let tgt = substitute(tgt, '/', '\', 'g') + call map(args, "substitute(v:val, '/', '\\', 'g')") + endif + + for fname in args + let shell_cmd = printf("%s %s %s %s", movecmd, movecmdargs, fname, tgt) + let ret= system(shell_cmd) if v:shell_error != 0 if exists("b:netrw_curdir") && b:netrw_curdir != getcwd() && !g:netrw_keepdir call netrw#msg#Notify('ERROR', printf("move failed; perhaps due to vim's current directory<%s> not matching netrw's (%s) (see :help netrw-cd)", getcwd(), b:netrw_curdir)) @@ -5905,7 +5918,7 @@ function s:NetrwMarkFileMove(islocal) elseif a:islocal && !s:netrwmftgt_islocal " move: local -> remote - let mflist= s:netrwmarkfilelist_{bufnr("%")} + let mflist= s:netrwmarkfilelist_{curbufnr} NetrwKeepj call s:NetrwMarkFileCopy(a:islocal) for fname in mflist let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') @@ -5915,7 +5928,7 @@ function s:NetrwMarkFileMove(islocal) elseif !a:islocal && s:netrwmftgt_islocal " move: remote -> local - let mflist= s:netrwmarkfilelist_{bufnr("%")} + let mflist= s:netrwmarkfilelist_{curbufnr} NetrwKeepj call s:NetrwMarkFileCopy(a:islocal) for fname in mflist let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') @@ -5925,7 +5938,7 @@ function s:NetrwMarkFileMove(islocal) elseif !a:islocal && !s:netrwmftgt_islocal " move: remote -> remote - let mflist= s:netrwmarkfilelist_{bufnr("%")} + let mflist= s:netrwmarkfilelist_{curbufnr} NetrwKeepj call s:NetrwMarkFileCopy(a:islocal) for fname in mflist let barefname = substitute(fname,'^\(.*/\)\(.\{-}\)$','\2','') @@ -6397,6 +6410,7 @@ function s:NetrwMenu(domenu) exe 'sil! menu '.g:NetrwMenuPriority.'.14.8 '.g:NetrwTopLvlMenu.'Marked\ Files.Exe\ Cmdmx mx' exe 'sil! menu '.g:NetrwMenuPriority.'.14.9 '.g:NetrwTopLvlMenu.'Marked\ Files.Move\ To\ Targetmm mm' exe 'sil! menu '.g:NetrwMenuPriority.'.14.10 '.g:NetrwTopLvlMenu.'Marked\ Files.ObtainO O' + exe 'sil! menu '.g:NetrwMenuPriority.'.14.11 '.g:NetrwTopLvlMenu.'Marked\ Files.Printmp mp' exe 'sil! menu '.g:NetrwMenuPriority.'.14.12 '.g:NetrwTopLvlMenu.'Marked\ Files.ReplaceR R' exe 'sil! menu '.g:NetrwMenuPriority.'.14.13 '.g:NetrwTopLvlMenu.'Marked\ Files.Set\ Targetmt mt' exe 'sil! menu '.g:NetrwMenuPriority.'.14.14 '.g:NetrwTopLvlMenu.'Marked\ Files.TagmT mT' @@ -6424,14 +6438,13 @@ function s:NetrwMenu(domenu) let s:netrwcnt = 0 let curwin = winnr() windo if getline(2) =~# "Netrw" | let s:netrwcnt= s:netrwcnt + 1 | endif - endif - exe curwin."wincmd w" + exe curwin."wincmd w" - if s:netrwcnt <= 1 - exe 'sil! unmenu '.g:NetrwTopLvlMenu - sil! unlet s:netrw_menu_enabled + if s:netrwcnt <= 1 + exe 'sil! unmenu '.g:NetrwTopLvlMenu + sil! unlet s:netrw_menu_enabled + endif endif - endif return endif @@ -8313,7 +8326,7 @@ function netrw#LocalBrowseCheck(dirname) let ibuf = 1 let buflast = bufnr("$") while ibuf <= buflast - if bufwinnr(ibuf) == -1 && isdirectory(s:NetrwFile(bufname(ibuf))) + if bufwinnr(ibuf) == -1 && !empty(bufname(ibuf)) && isdirectory(s:NetrwFile(bufname(ibuf))) exe "sil! keepj keepalt ".ibuf."bw!" endif let ibuf= ibuf + 1 @@ -8966,15 +8979,15 @@ endfunction " s:MakeSshCmd: transforms input command using USEPORT HOSTNAME into {{{2 " a correct command for use with a system() call function s:MakeSshCmd(sshcmd) - if s:user == "" - let sshcmd = substitute(a:sshcmd,'\',s:machine,'') - else - let sshcmd = substitute(a:sshcmd,'\',s:user."@".s:machine,'') + let machine = shellescape(s:machine, 1) + if s:user != '' + let machine = shellescape(s:user, 1).'@'.machine endif + let sshcmd = substitute(a:sshcmd,'\',machine,'') if exists("g:netrw_port") && g:netrw_port != "" - let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.g:netrw_port,'') + let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.shellescape(g:netrw_port,1),'') elseif exists("s:port") && s:port != "" - let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.s:port,'') + let sshcmd= substitute(sshcmd,"USEPORT",g:netrw_sshport.' '.shellescape(s:port,1),'') else let sshcmd= substitute(sshcmd,"USEPORT ",'','') endif diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim b/runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim index f2f98596..8c002a88 100644 --- a/runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim +++ b/runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim @@ -24,6 +24,7 @@ endfunction " netrw#fs#ComposePath: Appends a new part to a path taking different systems into consideration {{{ function! netrw#fs#ComposePath(base, subdir) + const slash = !exists('+shellslash') || &shellslash ? '/' : '\' if has('amiga') let ec = a:base[strdisplaywidth(a:base)-1] if ec != '/' && ec != ':' @@ -40,7 +41,7 @@ function! netrw#fs#ComposePath(base, subdir) if a:base =~ '[/\\]$' let ret = a:base . a:subdir else - let ret = a:base . '/' . a:subdir + let ret = a:base . slash . a:subdir endif elseif a:base =~ '^\a\{3,}://' diff --git a/runtime/pack/dist/opt/osc52/autoload/osc52.vim b/runtime/pack/dist/opt/osc52/autoload/osc52.vim new file mode 100644 index 00000000..3471329d --- /dev/null +++ b/runtime/pack/dist/opt/osc52/autoload/osc52.vim @@ -0,0 +1,97 @@ +vim9script + +export var allowed: bool = false + +export def Available(): bool + if get(g:, 'osc52_force_avail', 0) + return true + endif + return allowed +enddef + +var sent_message: bool = false + +def OSCMessage(id: number) + echo "Waiting for OSC52 response... Press CTRL-C to cancel" + sent_message = true +enddef + +export def Paste(reg: string): tuple> + # Check if user has indicated that the terminal does not support OSC 52 paste + # (or has disabled it) + if get(g:, 'osc52_disable_paste', 0) + return ("c", []) + endif + + # Some terminals like Kitty respect the selection type parameter on both X11 + # and Wayland. If the terminal doesn't then the selection type parameter + # should be ignored (no-op) + if reg == "+" + echoraw("\]52;c;?\\\") + else + echoraw("\]52;p;?\\\") + endif + + var timerid: number = timer_start(1000, OSCMessage) + var interrupt: bool = false + + # Wait for response from terminal. If we got interrupted (Ctrl-C), then do a + # redraw if we already sent the message, and return an empty string. + try + while true + var key: string = getcharstr(-1, {cursor: "hide"}) + + if key == "\" && match(v:termosc, '52;') != -1 + break + elseif key == "\" + interrupt = true + break + endif + endwhile + + # This doesn't seem to catch Ctrl-C sent via term_sendkeys(), which is used in + # tests. So also check the result of getcharstr()/getchar(). + catch /^Vim:Interrupt$/ + interrupt = true + finally + timer_stop(timerid) + if sent_message + sent_message = false + :redraw! + endif + endtry + + if interrupt + echo "Interrupted while waiting for OSC 52 response" + return ("c", [""]) + endif + + # Extract the base64 stuff + var stuff: string = matchstr(v:termosc, '52;.*;\zs[A-Za-z0-9+/=]*') + + if len(stuff) == 0 + return ("c", []) + endif + + var ret: list + + # "stuff" may be an invalid base64 string, so catch any errors + try + ret = blob2str(base64_decode(stuff)) + catch /E\(475\|1515\)/ + echo "Invalid OSC 52 response received" + return ("c", [""]) + endtry + + return ("", ret) +enddef + +export def Copy(reg: string, type: string, lines: list): void + if reg == "+" + echoraw("\]52;c;" .. base64_encode(str2blob(lines)) .. "\\\") + else + echoraw("\]52;p;" .. base64_encode(str2blob(lines)) .. "\\\") + endif +enddef + +# vim: set sw=2 sts=2 : diff --git a/runtime/pack/dist/opt/osc52/doc/osc52.txt b/runtime/pack/dist/opt/osc52/doc/osc52.txt new file mode 100644 index 00000000..7ac73c07 --- /dev/null +++ b/runtime/pack/dist/opt/osc52/doc/osc52.txt @@ -0,0 +1,71 @@ +*osc52.txt* For Vim version 9.1. Last change: 2025 Dec 18 + + + VIM REFERENCE MANUAL + +Use the OSC 52 terminal command for clipboard support +============================================================================== + +1. OVERVIEW *osc52-overview* + +The osc52.vim plugin provides support for the OSC 52 terminal command, which +allows an application to access the clipboard by communicating with the +terminal. This is useful in situations such as if you are in a SSH session. + + *osc52-support* +In order for this plugin to work, the terminal Vim is running in must +recognize and handle the OSC 52 escape sequence. You can easily check this +online. Additionally, while yanking is guaranteed to work, some terminals +don't implement the paste functionality. If the terminal doesn't support +pasting, then Vim will just block waiting for the data which will never come. +In this case just press Ctrl-C to cancel the operation. + + *osc52-selections* +Note that this only applies to users on Wayland or X11 platforms + +Some terminals support the selection type parameter in the OSC 52 command. +This originates from X11, and some terminals check this parameter and handle +it accordingly. If your terminal handles this parameter, then the "+" +register corresponds to the regular selection, and the "*" register +corresponds to the primary selection. If your terminal does not handle it, +then it is up to the terminal to handle what selection to use. + +2. HOW TO USE THE PLUGIN *osc52-how-to-use* + +The osc52.vim package relies on Vim's clipboard provider functionality, see +|clipboard-providers|. To enable it, add the following to your |vimrc|: >vim + packadd osc52 + set clipmethod+=osc52 +< +This appends "osc52" to |clipmethod|, causing Vim to try it only after any +earlier clipboard methods. This allows Vim to use the system clipboard +directly when available, and automatically fall back to OSC 52 method when it +is not (for example, when running over SSH). + +Note: that this fallback behavior applies only on platforms that use +|clipmethod| for accessing the clipboard. On macOS and Windows, Vim does not +use |clipmethod|, so this behaviour won't happen. Instead if OSC 52 support is +detected and "osc52" is the only value in |clipmethod|, then it will always be +used. + +You can check whether the osc52.vim provider is active by inspecting +|v:clipmethod|. If it contains "osc52", the plugin is enabled. + +Note: terminal multiplexers such as tmux may interfere with automatic OSC 52 +detection. + + *g:osc52_force_avail* +In most cases, the plugin should automatically detect and work if your +terminal supports the OSC 52 command. Internally, it does this by sending the +Primary Device Attributes (DA1) query. You may force enable the plugin by +setting |g:osc52_force_avail| to true. + + *g:osc52_disable_paste* +If your terminal does not support pasting via OSC 52, or has it disabled, then +it is a good idea to set g:osc52_disable_paste to TRUE. This will register +only the "copy" method for the osc52.vim clipboard provider, so Vim will not +attempt an OSC 52 paste query and avoids the blocking wait described in +|osc52-support|. + +============================================================================== +vim:tw=78:ts=8:fo=tcq2:ft=help: diff --git a/runtime/pack/dist/opt/osc52/doc/tags b/runtime/pack/dist/opt/osc52/doc/tags new file mode 100644 index 00000000..9d723973 --- /dev/null +++ b/runtime/pack/dist/opt/osc52/doc/tags @@ -0,0 +1,7 @@ +g:osc52_disable_paste osc52.txt /*g:osc52_disable_paste* +g:osc52_force_avail osc52.txt /*g:osc52_force_avail* +osc52-how-to-use osc52.txt /*osc52-how-to-use* +osc52-overview osc52.txt /*osc52-overview* +osc52-selections osc52.txt /*osc52-selections* +osc52-support osc52.txt /*osc52-support* +osc52.txt osc52.txt /*osc52.txt* diff --git a/runtime/pack/dist/opt/osc52/plugin/osc52.vim b/runtime/pack/dist/opt/osc52/plugin/osc52.vim new file mode 100644 index 00000000..0ae16376 --- /dev/null +++ b/runtime/pack/dist/opt/osc52/plugin/osc52.vim @@ -0,0 +1,59 @@ +vim9script + +# Vim plugin for OSC52 clipboard support +# +# Maintainer: The Vim Project +# Last Change: 2026 Mar 01 + +if !has("timers") + finish +endif + +import autoload "../autoload/osc52.vim" as osc + +var provider: dict = { + "available": osc.Available, + "copy": { + "*": osc.Copy, + "+": osc.Copy + }, +} + +if !get(g:, 'osc52_disable_paste', 0) + provider->extend({ + "paste": { + "*": osc.Paste, + "+": osc.Paste + } + }) +endif + +v:clipproviders["osc52"] = provider + +def SendDA1(): void + if !has("gui_running") && !get(g:, 'osc52_force_avail', 0) + && !get(g:, 'osc52_no_da1', 0) + echoraw("\[c") + endif +enddef + +if v:vim_did_enter + SendDA1() +endif + +augroup VimOSC52Plugin + autocmd! + # Query support for OSC 52 using a DA1 query + autocmd TermResponseAll da1 { + if match(v:termda1, '?\zs.*52\ze') != -1 + osc.allowed = true + :silent! clipreset + else + osc.allowed = false + :silent! clipreset + endif + } + autocmd VimEnter * SendDA1() +augroup END + +# vim: set sw=2 sts=2 : diff --git a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim index cefa1a08..3ac5c71d 100644 --- a/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim +++ b/runtime/pack/dist/opt/termdebug/plugin/termdebug.vim @@ -4,7 +4,7 @@ vim9script # Author: Bram Moolenaar # Copyright: Vim license applies, see ":help license" -# Last Change: 2025 Oct 08 +# Last Change: 2026 Mar 11 # Converted to Vim9: Ubaldo Tiberi # WORK IN PROGRESS - The basics works stable, more to come @@ -454,7 +454,7 @@ def GetRemotePtyCmd(gdb_cmd: list): list term_cmd = gdb_cmd[0 : gdb_pos - 1] # roundtrip to check if socat is available on the remote side silent call system(join(term_cmd, ' ') .. ' socat -h') - if v:shell_error + if v:shell_error != 0 Echowarn('Install socat on the remote machine for a program window better experience') else # create a devoted tty slave device and link to stdin/stdout @@ -1592,6 +1592,87 @@ def QuoteArg(x: string): string return printf('"%s"', x ->substitute('[\\"]', '\\&', 'g')) enddef +def DefaultBreakpointLocation(): string + # Use the fname:lnum format, older gdb can't handle --source. + var fname = Remote2LocalPath(expand('%:p')) + return QuoteArg($"{fname}:{line('.')}") +enddef + +def TokenizeBreakpointArguments(args: string): list> + var tokens: list> = [] + var start = -1 + var escaped = false + var in_quotes = false + + var i = 0 + for ch in args + if start < 0 && ch !~ '\s' + start = i + endif + if start >= 0 + if escaped + escaped = false + elseif ch == '\' + escaped = true + elseif ch == '"' + in_quotes = !in_quotes + elseif !in_quotes && ch =~ '\s' + tokens->add({text: args[start : i - 1], start: start, end: i - 1}) + start = -1 + endif + endif + i += 1 + endfor + + if start >= 0 + tokens->add({text: args[start :], start: start, end: i - 1}) + endif + return tokens +enddef + +def BuildBreakpointCommand(at: string, tbreak=false): string + var args = trim(at) + var cmd = '-break-insert' + if tbreak + cmd ..= ' -t' + endif + + if empty(args) + return $'{cmd} {DefaultBreakpointLocation()}' + endif + + var condition = '' + var prefix = args + for token in TokenizeBreakpointArguments(args) + if token.text == 'if' && token.end < strchars(args) - 1 + condition = trim(args[token.end + 1 :]) + prefix = token.start > 0 ? trim(args[: token.start - 1]) : '' + break + endif + endfor + + var prefix_tokens = TokenizeBreakpointArguments(prefix) + var location = prefix + var thread = '' + if len(prefix_tokens) >= 2 + && prefix_tokens[-2].text == 'thread' + && prefix_tokens[-1].text =~ '^\d\+$' + thread = prefix_tokens[-1].text + location = join(prefix_tokens[: -3]->mapnew('v:val.text'), ' ') + endif + + if empty(trim(location)) + location = DefaultBreakpointLocation() + endif + if !empty(thread) + cmd ..= $' -p {thread}' + endif + if !empty(condition) + cmd ..= $' -c {QuoteArg(condition)}' + endif + return $'{cmd} {trim(location)}' +enddef + # :Until - Execute until past a specified position or current line def Until(at: string) @@ -1620,15 +1701,7 @@ def SetBreakpoint(at: string, tbreak=false) sleep 10m endif - # Use the fname:lnum format, older gdb can't handle --source. - var fname = Remote2LocalPath(expand('%:p')) - var AT = empty(at) ? QuoteArg($"{fname}:{line('.')}") : at - var cmd = '' - if tbreak - cmd = $'-break-insert -t {AT}' - else - cmd = $'-break-insert {AT}' - endif + var cmd = BuildBreakpointCommand(at, tbreak) SendCommand(cmd) if do_continue ContinueCommand() diff --git a/runtime/syntax/8th.vim b/runtime/syntax/8th.vim index 066d685d..b84bfbf2 100644 --- a/runtime/syntax/8th.vim +++ b/runtime/syntax/8th.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: 8th -" Version: 25.04.01 -" Last Change: 2025 Jun 10 +" Version: 26.02 +" Last Change: 2026 Jan 28 " Maintainer: Ron Aaron " URL: https://8th-dev.com/ " Filetypes: *.8th @@ -53,10 +53,10 @@ Builtin K G:K NaN G:NaN NaN? G:NaN? SED-CHECK G:SED-CHECK SED: G:SED: SED: G:SE Builtin _swap G:_swap actor: G:actor: again G:again ahead G:ahead all-words G:all-words and G:and apropos G:apropos Builtin argc G:argc args G:args array? G:array? assert G:assert base G:base base>n G:base>n bi G:bi Builtin bits G:bits break G:break break? G:break? breakif G:breakif build? G:build? buildver? G:buildver? -Builtin bye G:bye c/does G:c/does case: G:case: catch G:catch chdir G:chdir clip-mime> G:clip-mime> -Builtin clip-mime? G:clip-mime? clip> G:clip> clone G:clone clone-shallow G:clone-shallow cold G:cold -Builtin compile G:compile compile? G:compile? compiling? G:compiling? conflict G:conflict const G:const -Builtin container? G:container? counting-allocations G:counting-allocations cr G:cr critical: G:critical: +Builtin bye G:bye c/does G:c/does case: G:case: catch G:catch chdir G:chdir clip-mime-types G:clip-mime-types +Builtin clip-mime> G:clip-mime> clip-mime? G:clip-mime? clip> G:clip> clone G:clone clone-shallow G:clone-shallow +Builtin cold G:cold compile G:compile compile? G:compile? compiling? G:compiling? conflict G:conflict +Builtin const G:const container? G:container? counting-allocations G:counting-allocations cr G:cr critical: G:critical: Builtin critical; G:critical; curlang G:curlang curry G:curry curry: G:curry: decimal G:decimal default: G:default: Builtin defer: G:defer: deferred: G:deferred: deg>rad G:deg>rad depth G:depth die G:die dip G:dip drop G:drop Builtin dstack G:dstack dump G:dump dup G:dup dup>r G:dup>r dup? G:dup? e# G:e# enum: G:enum: error? G:error? @@ -70,25 +70,25 @@ Builtin l: G:l: last G:last lib G:lib libbin G:libbin libc G:libc libimg G:libi Builtin locals: G:locals: lock G:lock lock-to G:lock-to locked? G:locked? log G:log logl G:logl long-days G:long-days Builtin long-months G:long-months longjmp G:longjmp lookup G:lookup loop G:loop loop- G:loop- map? G:map? Builtin mark G:mark mark? G:mark? mobile? G:mobile? n# G:n# name>os G:name>os name>sem G:name>sem ndrop G:ndrop -Builtin needs G:needs needs-throws G:needs-throws new G:new next-arg G:next-arg nip G:nip noop G:noop -Builtin not G:not nothrow G:nothrow ns G:ns ns: G:ns: ns>ls G:ns>ls ns>s G:ns>s ns? G:ns? null G:null -Builtin null; G:null; null? G:null? nullvar G:nullvar number? G:number? of: G:of: off G:off on G:on -Builtin onexit G:onexit only G:only op! G:op! or G:or os G:os os-names G:os-names os>long-name G:os>long-name -Builtin os>name G:os>name over G:over p: G:p: pack G:pack parse G:parse parse-csv G:parse-csv parse-date G:parse-date -Builtin parsech G:parsech parseln G:parseln parsews G:parsews pick G:pick poke G:poke pool-clear G:pool-clear -Builtin pool-clear-all G:pool-clear-all prior G:prior private G:private process-args G:process-args -Builtin process-args-fancy G:process-args-fancy process-args-help G:process-args-help prompt G:prompt -Builtin public G:public putc G:putc puts G:puts quote G:quote r! G:r! r> G:r> r@ G:r@ rad>deg G:rad>deg -Builtin rand-float G:rand-float rand-float-signed G:rand-float-signed rand-jit G:rand-jit rand-jsf G:rand-jsf -Builtin rand-native G:rand-native rand-normal G:rand-normal rand-pcg G:rand-pcg rand-pcg-seed G:rand-pcg-seed -Builtin rand-range G:rand-range rand-select G:rand-select randbuf-pcg G:randbuf-pcg random G:random -Builtin rdrop G:rdrop recurse G:recurse recurse-stack G:recurse-stack ref@ G:ref@ reg! G:reg! reg@ G:reg@ -Builtin regbin@ G:regbin@ remaining-args G:remaining-args repeat G:repeat requires G:requires reset G:reset -Builtin roll G:roll rop! G:rop! rot G:rot rpick G:rpick rreset G:rreset rroll G:rroll rstack G:rstack -Builtin rswap G:rswap rusage G:rusage s>ns G:s>ns same? G:same? scriptdir G:scriptdir scriptfile G:scriptfile -Builtin sem G:sem sem-post G:sem-post sem-rm G:sem-rm sem-wait G:sem-wait sem-wait? G:sem-wait? sem>name G:sem>name -Builtin semi-throw G:semi-throw set-wipe G:set-wipe setenv G:setenv setjmp G:setjmp settings! G:settings! -Builtin settings![] G:settings![] settings-clear G:settings-clear settings-db-name G:settings-db-name +Builtin needs G:needs needs-throws G:needs-throws new G:new next-arg G:next-arg next-num-var G:next-num-var +Builtin next-var G:next-var nip G:nip noop G:noop not G:not nothrow G:nothrow ns G:ns ns: G:ns: ns>ls G:ns>ls +Builtin ns>s G:ns>s ns? G:ns? null G:null null; G:null; null? G:null? nullvar G:nullvar number? G:number? +Builtin of: G:of: off G:off on G:on onexit G:onexit only G:only op! G:op! or G:or os G:os os-names G:os-names +Builtin os>long-name G:os>long-name os>name G:os>name over G:over p: G:p: pack G:pack parse G:parse +Builtin parse-csv G:parse-csv parse-date G:parse-date parsech G:parsech parseln G:parseln parsews G:parsews +Builtin pick G:pick poke G:poke pool-clear G:pool-clear pool-clear-all G:pool-clear-all prior G:prior +Builtin private G:private process-args G:process-args process-args-fancy G:process-args-fancy process-args-help G:process-args-help +Builtin prompt G:prompt public G:public putc G:putc puts G:puts quote G:quote r! G:r! r> G:r> r@ G:r@ +Builtin rad>deg G:rad>deg rand-float G:rand-float rand-float-signed G:rand-float-signed rand-jit G:rand-jit +Builtin rand-jsf G:rand-jsf rand-native G:rand-native rand-normal G:rand-normal rand-pcg G:rand-pcg +Builtin rand-pcg-seed G:rand-pcg-seed rand-range G:rand-range rand-select G:rand-select randbuf-pcg G:randbuf-pcg +Builtin random G:random rdrop G:rdrop recurse G:recurse recurse-stack G:recurse-stack ref@ G:ref@ reg! G:reg! +Builtin reg@ G:reg@ regbin@ G:regbin@ remaining-args G:remaining-args repeat G:repeat requires G:requires +Builtin reset G:reset roll G:roll rop! G:rop! rot G:rot rpick G:rpick rreset G:rreset rroll G:rroll +Builtin rstack G:rstack rswap G:rswap rusage G:rusage s>ns G:s>ns same? G:same? scriptdir G:scriptdir +Builtin scriptfile G:scriptfile sem G:sem sem-post G:sem-post sem-rm G:sem-rm sem-wait G:sem-wait sem-wait? G:sem-wait? +Builtin sem>name G:sem>name semi-throw G:semi-throw set-wipe G:set-wipe setenv G:setenv setjmp G:setjmp +Builtin settings! G:settings! settings![] G:settings![] settings-clear G:settings-clear settings-db-name G:settings-db-name Builtin settings-gather G:settings-gather settings-load G:settings-load settings-save G:settings-save Builtin settings-save-these G:settings-save-these settings-ungather G:settings-ungather settings@ G:settings@ Builtin settings@? G:settings@? settings@[] G:settings@[] sh G:sh sh! G:sh! sh!to G:sh!to sh$ G:sh$ @@ -108,19 +108,20 @@ Builtin dot a:dot each a:each each! a:each! each-par a:each-par each-slice a:ea Builtin filter a:filter filter-par a:filter-par generate a:generate group a:group indexof a:indexof Builtin insert a:insert intersect a:intersect join a:join len a:len map a:map map+ a:map+ map-par a:map-par Builtin map= a:map= maxlen a:maxlen mean a:mean mean&variance a:mean&variance merge a:merge new a:new -Builtin op! a:op! open a:open pigeon a:pigeon pivot a:pivot pop a:pop push a:push qsort a:qsort randeach a:randeach -Builtin reduce a:reduce reduce+ a:reduce+ remove a:remove rev a:rev rindexof a:rindexof shift a:shift -Builtin shuffle a:shuffle slice a:slice slice+ a:slice+ slide a:slide smear a:smear sort a:sort split a:split -Builtin squash a:squash switch a:switch union a:union uniq a:uniq unzip a:unzip x a:x x-each a:x-each -Builtin xchg a:xchg y a:y zip a:zip 8thdir app:8thdir asset app:asset atrun app:atrun atrun app:atrun -Builtin atrun app:atrun basedir app:basedir basename app:basename config-file-name app:config-file-name +Builtin op! a:op! open a:open pigeon a:pigeon pivot a:pivot pop a:pop push a:push push-n a:push-n qsort a:qsort +Builtin randeach a:randeach reduce a:reduce reduce+ a:reduce+ remove a:remove rev a:rev rindexof a:rindexof +Builtin search a:search shift a:shift shuffle a:shuffle slice a:slice slice+ a:slice+ slide a:slide +Builtin smear a:smear sort a:sort split a:split squash a:squash union a:union uniq a:uniq unzip a:unzip +Builtin when-n a:when-n x a:x x-each a:x-each xchg a:xchg y a:y zip a:zip 8thdir app:8thdir asset app:asset +Builtin atrun app:atrun atrun app:atrun atrun app:atrun basedir app:basedir basename app:basename config-file-name app:config-file-name Builtin current app:current datadir app:datadir display-moved app:display-moved exename app:exename Builtin localechanged app:localechanged lowmem app:lowmem main app:main meta! app:meta! meta@ app:meta@ Builtin name app:name onback app:onback oncrash app:oncrash opts! app:opts! opts@ app:opts@ orientation app:orientation Builtin orientation! app:orientation! pid app:pid post-main app:post-main pre-main app:pre-main privdir app:privdir Builtin quiet? app:quiet? raise app:raise read-config app:read-config read-config-map app:read-config-map -Builtin read-config-var app:read-config-var request-perm app:request-perm restart app:restart resumed app:resumed -Builtin signal app:signal standalone app:standalone standalone! app:standalone! subdir app:subdir suspended app:suspended +Builtin read-config-var app:read-config-var read-config-vars app:read-config-vars request-perm app:request-perm +Builtin restart app:restart resumed app:resumed save-config-vars app:save-config-vars signal app:signal +Builtin standalone app:standalone standalone! app:standalone! subdir app:subdir suspended app:suspended Builtin sysquit app:sysquit terminated app:terminated theme? app:theme? themechanged app:themechanged Builtin ticks app:ticks timeout app:timeout trap app:trap dawn astro:dawn do-dawn astro:do-dawn do-dusk astro:do-dusk Builtin do-rise astro:do-rise dst! astro:dst! dusk astro:dusk latitude astro:latitude location! astro:location! @@ -197,14 +198,16 @@ Builtin prev-dow d:prev-dow relative d:relative rfc5322 d:rfc5322 start-timer d Builtin ticks/sec d:ticks/sec timer d:timer timer-ctrl d:timer-ctrl tzadjust d:tzadjust unix> d:unix> Builtin unknown d:unknown unknown? d:unknown? updatetz d:updatetz year@ d:year@ ymd d:ymd ymd> d:ymd> Builtin MYSQLLIB db:MYSQLLIB ODBCLIB db:ODBCLIB add-func db:add-func aes! db:aes! again? db:again? -Builtin begin db:begin bind db:bind bind-exec db:bind-exec bind-exec{} db:bind-exec{} close db:close -Builtin col db:col col{} db:col{} commit db:commit db db:db dbpush db:dbpush disuse db:disuse each db:each -Builtin err-handler db:err-handler exec db:exec exec-cb db:exec-cb exec-name db:exec-name exec{} db:exec{} -Builtin get db:get get-sub db:get-sub key db:key kind? db:kind? last-rowid db:last-rowid mysql? db:mysql? -Builtin odbc? db:odbc? open db:open open? db:open? prep-name db:prep-name prepare db:prepare query db:query -Builtin query-all db:query-all rekey db:rekey rollback db:rollback set db:set set-sub db:set-sub sql@ db:sql@ -Builtin sql[] db:sql[] sql[np] db:sql[np] sql{np} db:sql{np} sql{} db:sql{} use db:use zip db:zip .state dbg:.state -Builtin bp dbg:bp bt dbg:bt except-task@ dbg:except-task@ go dbg:go prompt dbg:prompt see dbg:see stop dbg:stop +Builtin begin db:begin begin! db:begin! bind db:bind bind-exec db:bind-exec bind-exec{} db:bind-exec{} +Builtin close db:close col db:col col{} db:col{} commit db:commit commit! db:commit! db db:db dbpush db:dbpush +Builtin disuse db:disuse each db:each ensure db:ensure err-handler db:err-handler exec db:exec exec-cb db:exec-cb +Builtin exec-name db:exec-name exec{} db:exec{} get db:get get-sub db:get-sub get-sub[] db:get-sub[] +Builtin get[] db:get[] key db:key kind? db:kind? last-rowid db:last-rowid mysql? db:mysql? odbc? db:odbc? +Builtin open db:open open? db:open? prep-name db:prep-name prepare db:prepare query db:query query-all db:query-all +Builtin rekey db:rekey rollback db:rollback rollback! db:rollback! rowid@ db:rowid@ set db:set set-sub db:set-sub +Builtin set-sub[] db:set-sub[] set[] db:set[] sql@ db:sql@ sql[] db:sql[] sql[np] db:sql[np] sql{np} db:sql{np} +Builtin sql{} db:sql{} table-exists db:table-exists use db:use zip db:zip .state dbg:.state bp dbg:bp +Builtin bt dbg:bt except-task@ dbg:except-task@ go dbg:go prompt dbg:prompt see dbg:see stop dbg:stop Builtin trace dbg:trace pso ds:pso / f:/ >posix f:>posix abspath f:abspath absrel f:absrel append f:append Builtin associate f:associate atime f:atime autodel f:autodel canwrite? f:canwrite? chmod f:chmod close f:close Builtin copy f:copy copydir f:copydir create f:create ctime f:ctime dir? f:dir? dname f:dname eachbuf f:eachbuf @@ -214,47 +217,49 @@ Builtin getline f:getline getmod f:getmod glob f:glob glob-links f:glob-links g Builtin globfilter f:globfilter gunz f:gunz homedir f:homedir homedir! f:homedir! include f:include Builtin ioctl f:ioctl join f:join launch f:launch link f:link link> f:link> link? f:link? lock f:lock Builtin mkdir f:mkdir mmap f:mmap mmap-range f:mmap-range mmap-range? f:mmap-range? mtime f:mtime mv f:mv -Builtin name@ f:name@ open f:open open! f:open! open-ro f:open-ro popen f:popen popen3 f:popen3 print f:print -Builtin read f:read read-buf f:read-buf read? f:read? relpath f:relpath rglob f:rglob rm f:rm rmdir f:rmdir -Builtin seek f:seek sep f:sep size f:size slurp f:slurp sparse? f:sparse? spit f:spit stderr f:stderr -Builtin stdin f:stdin stdout f:stdout tell f:tell tempfile f:tempfile tilde f:tilde tilde? f:tilde? -Builtin times f:times tmpspit f:tmpspit trash f:trash truncate f:truncate ungetb f:ungetb ungetc f:ungetc -Builtin unzip f:unzip unzip-entry f:unzip-entry watch f:watch write f:write writen f:writen zip+ f:zip+ -Builtin zip@ f:zip@ zipentry f:zipentry zipnew f:zipnew zipopen f:zipopen zipsave f:zipsave atlas! font:atlas! -Builtin atlas@ font:atlas@ default-size font:default-size default-size@ font:default-size@ info font:info -Builtin ls font:ls measure font:measure new font:new oversample font:oversample pixels font:pixels -Builtin pixels? font:pixels? system font:system system font:system filebrowser g:filebrowser media? g:media? -Builtin event-loop game:event-loop init game:init state! game:state! state@ game:state@ distance geo:distance -Builtin km/deg-lat geo:km/deg-lat km/deg-lon geo:km/deg-lon nearest geo:nearest close gpio:close flags! gpio:flags! -Builtin info gpio:info init gpio:init line gpio:line open gpio:open read gpio:read req gpio:req write gpio:write -Builtin +edge gr:+edge +edge+w gr:+edge+w +node gr:+node connect gr:connect edges gr:edges edges! gr:edges! +Builtin name@ f:name@ open f:open open! f:open! open-ro f:open-ro popen f:popen popen3 f:popen3 prepend f:prepend +Builtin print f:print read f:read read-buf f:read-buf read? f:read? relpath f:relpath rglob f:rglob +Builtin rm f:rm rmdir f:rmdir seek f:seek sep f:sep size f:size slurp f:slurp sparse? f:sparse? spit f:spit +Builtin stderr f:stderr stdin f:stdin stdout f:stdout tell f:tell tempfile f:tempfile tilde f:tilde +Builtin tilde? f:tilde? times f:times tmpspit f:tmpspit trash f:trash truncate f:truncate ungetb f:ungetb +Builtin ungetc f:ungetc unzip f:unzip unzip-entry f:unzip-entry watch f:watch write f:write writen f:writen +Builtin zip+ f:zip+ zip@ f:zip@ zipentry f:zipentry zipnew f:zipnew zipopen f:zipopen zipsave f:zipsave +Builtin atlas font:atlas atlas! font:atlas! atlas@ font:atlas@ default-size font:default-size default-size@ font:default-size@ +Builtin info font:info ls font:ls ls font:ls measure font:measure new font:new oversample font:oversample +Builtin pixels font:pixels pixels? font:pixels? pt2pix font:pt2pix system font:system filebrowser g:filebrowser +Builtin media? g:media? event-loop game:event-loop init game:init state! game:state! state@ game:state@ +Builtin distance geo:distance km/deg-lat geo:km/deg-lat km/deg-lon geo:km/deg-lon nearest geo:nearest +Builtin close gpio:close flags! gpio:flags! info gpio:info init gpio:init line gpio:line open gpio:open +Builtin read gpio:read req gpio:req ver gpio:ver write gpio:write +edge gr:+edge +edge+w gr:+edge+w +Builtin +node gr:+node connect gr:connect each gr:each edges gr:edges edges! gr:edges! info gr:info Builtin m! gr:m! m@ gr:m@ neighbors gr:neighbors new gr:new node-edges gr:node-edges nodes gr:nodes -Builtin traverse gr:traverse weight! gr:weight! + h:+ @ h:@ clear h:clear cmp! h:cmp! len h:len max! h:max! -Builtin new h:new peek h:peek pop h:pop push h:push unique h:unique parse html:parse arm? hw:arm? camera hw:camera -Builtin camera-img hw:camera-img camera? hw:camera? cpu? hw:cpu? device? hw:device? displays? hw:displays? -Builtin displaysize? hw:displaysize? finger-match hw:finger-match finger-support hw:finger-support -Builtin i2c hw:i2c i2c! hw:i2c! i2c!reg hw:i2c!reg i2c@ hw:i2c@ i2c@reg hw:i2c@reg isround? hw:isround? -Builtin iswatch? hw:iswatch? mac? hw:mac? mem? hw:mem? model? hw:model? poll hw:poll sensor hw:sensor -Builtin sensor-event hw:sensor-event sensors? hw:sensors? start hw:start stop hw:stop touch? hw:touch? -Builtin uid? hw:uid? fetch-full imap:fetch-full fetch-uid-mail imap:fetch-uid-mail login imap:login -Builtin logout imap:logout new imap:new search imap:search select-inbox imap:select-inbox >file img:>file -Builtin >fmt img:>fmt ECC-HIGH img:ECC-HIGH ECC-LOW img:ECC-LOW ECC-MEDIUM img:ECC-MEDIUM ECC-QUARTILE img:ECC-QUARTILE -Builtin copy img:copy crop img:crop data img:data desat img:desat draw img:draw draw-sub img:draw-sub -Builtin exif img:exif exif-rotate? img:exif-rotate? fill img:fill fillrect img:fillrect filter img:filter -Builtin fit img:fit flip img:flip from-svg img:from-svg line img:line new img:new pikchr img:pikchr -Builtin pix! img:pix! pix@ img:pix@ qr-black img:qr-black qr-block img:qr-block qr-gen img:qr-gen qr-margin img:qr-margin -Builtin qr-parse img:qr-parse qr-white img:qr-white qr>img img:qr>img rect img:rect rotate img:rotate -Builtin scale img:scale scroll img:scroll size img:size countries iso:countries languages iso:languages +Builtin search gr:search traverse gr:traverse weight! gr:weight! + h:+ >a h:>a @ h:@ clear h:clear +Builtin cmp! h:cmp! len h:len max! h:max! new h:new peek h:peek pop h:pop push h:push unique h:unique +Builtin parse html:parse arm? hw:arm? camera hw:camera camera-img hw:camera-img camera? hw:camera? +Builtin cpu? hw:cpu? device? hw:device? displays? hw:displays? displaysize? hw:displaysize? finger-match hw:finger-match +Builtin finger-support hw:finger-support i2c hw:i2c i2c! hw:i2c! i2c!reg hw:i2c!reg i2c@ hw:i2c@ i2c@reg hw:i2c@reg +Builtin isround? hw:isround? iswatch? hw:iswatch? mac? hw:mac? mem? hw:mem? model? hw:model? poll hw:poll +Builtin sensor hw:sensor sensor-event hw:sensor-event sensors? hw:sensors? start hw:start stop hw:stop +Builtin touch? hw:touch? uid? hw:uid? fetch-full imap:fetch-full fetch-uid-mail imap:fetch-uid-mail +Builtin login imap:login logout imap:logout new imap:new search imap:search select-inbox imap:select-inbox +Builtin >file img:>file >fmt img:>fmt ECC-HIGH img:ECC-HIGH ECC-LOW img:ECC-LOW ECC-MEDIUM img:ECC-MEDIUM +Builtin ECC-QUARTILE img:ECC-QUARTILE copy img:copy crop img:crop data img:data desat img:desat draw img:draw +Builtin draw-sub img:draw-sub exif img:exif exif-rotate? img:exif-rotate? fill img:fill fillrect img:fillrect +Builtin filter img:filter fit img:fit flip img:flip from-svg img:from-svg line img:line new img:new +Builtin pikchr img:pikchr pix! img:pix! pix@ img:pix@ qr-black img:qr-black qr-block img:qr-block qr-gen img:qr-gen +Builtin qr-margin img:qr-margin qr-parse img:qr-parse qr-white img:qr-white qr>img img:qr>img rect img:rect +Builtin rotate img:rotate scale img:scale scroll img:scroll size img:size countries iso:countries languages iso:languages Builtin bearing loc:bearing city loc:city city-db loc:city-db city-exact loc:city-exact city-exact loc:city-exact Builtin city-version loc:city-version city_country loc:city_country find loc:find sort loc:sort console log:console Builtin file log:file hook log:hook level log:level local log:local qsize log:qsize syslog log:syslog Builtin task log:task time log:time ! m:! !? m:!? + m:+ +? m:+? - m:- <> m:<> = m:= >arr m:>arr @ m:@ Builtin @? m:@? _! m:_! _@ m:_@ _@? m:_@? accumulate m:accumulate alias m:alias arr> m:arr> bitmap m:bitmap Builtin clear m:clear data m:data each m:each exists? m:exists? filter m:filter ic m:ic iter m:iter -Builtin iter-all m:iter-all keys m:keys len m:len map m:map merge m:merge new m:new op! m:op! open m:open -Builtin slice m:slice vals m:vals xchg m:xchg zip m:zip ! mat:! * mat:* + mat:+ = mat:= @ mat:@ affine mat:affine -Builtin col mat:col data mat:data det mat:det dim? mat:dim? get-n mat:get-n ident mat:ident inv mat:inv -Builtin m. mat:m. minor mat:minor n* mat:n* new mat:new new-minor mat:new-minor rotate mat:rotate row mat:row +Builtin iter-all m:iter-all iter-sorted m:iter-sorted iter-sorted-vals m:iter-sorted-vals keys m:keys +Builtin len m:len map m:map merge m:merge new m:new op! m:op! open m:open slice m:slice vals m:vals +Builtin xchg m:xchg zip m:zip ! mat:! * mat:* + mat:+ = mat:= @ mat:@ affine mat:affine col mat:col +Builtin data mat:data det mat:det dim? mat:dim? get-n mat:get-n ident mat:ident inv mat:inv m. mat:m. +Builtin minor mat:minor n* mat:n* new mat:new new-minor mat:new-minor rotate mat:rotate row mat:row Builtin same-size? mat:same-size? scale mat:scale shear mat:shear trans mat:trans translate mat:translate Builtin xform mat:xform 2console md:2console 2html md:2html 2nk md:2nk 8th? md:8th? user! md:user! Builtin user!@ md:user!@ user@ md:user@ user@@ md:user@@ color meta:color console meta:console gui meta:gui @@ -283,140 +288,146 @@ Builtin head net:head ifaces? net:ifaces? interp8th net:interp8th ipv6? net:ipv Builtin listen net:listen map>url net:map>url mime-type net:mime-type net-socket net:net-socket opts net:opts Builtin port-is-ssl? net:port-is-ssl? post net:post proxy! net:proxy! put net:put read net:read read-all net:read-all Builtin read-buf net:read-buf recvfrom net:recvfrom s>url net:s>url sendto net:sendto server net:server -Builtin setsockopt net:setsockopt socket net:socket socket-mcast net:socket-mcast tcp-connect net:tcp-connect -Builtin tlserr net:tlserr tlshello net:tlshello udp-connect net:udp-connect url> net:url> user-agent net:user-agent -Builtin valid-email? net:valid-email? vpncheck net:vpncheck wait net:wait webserver net:webserver write net:write +Builtin setsockopt net:setsockopt socket net:socket socket-mcast net:socket-mcast spamcheck net:spamcheck +Builtin tcp-connect net:tcp-connect tlserr net:tlserr tlshello net:tlshello udp-connect net:udp-connect +Builtin url> net:url> user-agent net:user-agent valid-email? net:valid-email? vpncheck net:vpncheck +Builtin wait net:wait webserver net:webserver write net:write ws-parse net:ws-parse init nfc:init list nfc:list +Builtin name nfc:name open nfc:open present? nfc:present? read nfc:read ver nfc:ver write nfc:write Builtin (begin) nk:(begin) (chart-begin) nk:(chart-begin) (chart-begin-colored) nk:(chart-begin-colored) Builtin (chart-end) nk:(chart-end) (end) nk:(end) (group-begin) nk:(group-begin) (group-end) nk:(group-end) Builtin (property) nk:(property) >img nk:>img PIXEL-FORMATS nk:PIXEL-FORMATS addfont nk:addfont affine nk:affine -Builtin anti-alias nk:anti-alias any-clicked? nk:any-clicked? bounds nk:bounds bounds! nk:bounds! button nk:button -Builtin button-color nk:button-color button-label nk:button-label button-set-behavior nk:button-set-behavior -Builtin button-symbol nk:button-symbol button-symbol-label nk:button-symbol-label calendar nk:calendar -Builtin chart-add-slot nk:chart-add-slot chart-add-slot-colored nk:chart-add-slot-colored chart-push nk:chart-push -Builtin chart-push-slot nk:chart-push-slot checkbox nk:checkbox circle nk:circle clicked? nk:clicked? -Builtin close-this! nk:close-this! close-this? nk:close-this? close? nk:close? color-chooser nk:color-chooser -Builtin color-picker nk:color-picker combo nk:combo combo-begin-color nk:combo-begin-color combo-begin-label nk:combo-begin-label -Builtin combo-cb nk:combo-cb combo-end nk:combo-end contextual-begin nk:contextual-begin contextual-close nk:contextual-close -Builtin contextual-end nk:contextual-end contextual-item-image-text nk:contextual-item-image-text contextual-item-symbol-text nk:contextual-item-symbol-text -Builtin contextual-item-text nk:contextual-item-text cp! nk:cp! cp@ nk:cp@ curpos nk:curpos cursor-load nk:cursor-load -Builtin cursor-set nk:cursor-set cursor-show nk:cursor-show display-info nk:display-info display-scale@ nk:display-scale@ -Builtin display@ nk:display@ do nk:do down? nk:down? draw-image nk:draw-image draw-image-at nk:draw-image-at -Builtin draw-image-centered nk:draw-image-centered draw-sub-image nk:draw-sub-image draw-text nk:draw-text -Builtin draw-text-centered nk:draw-text-centered draw-text-high nk:draw-text-high draw-text-wrap nk:draw-text-wrap -Builtin driver nk:driver drivers nk:drivers dropped nk:dropped dropping nk:dropping edit-focus nk:edit-focus -Builtin edit-string nk:edit-string event nk:event event-boost nk:event-boost event-msec nk:event-msec -Builtin event-wait nk:event-wait event? nk:event? fill-arc nk:fill-arc fill-circle nk:fill-circle fill-color nk:fill-color -Builtin fill-poly nk:fill-poly fill-rect nk:fill-rect fill-rect-color nk:fill-rect-color fill-triangle nk:fill-triangle -Builtin finger nk:finger flags! nk:flags! flags@ nk:flags@ flash nk:flash fullscreen nk:fullscreen -Builtin gesture nk:gesture get nk:get get-row-height nk:get-row-height getfont nk:getfont getmap nk:getmap -Builtin getmap! nk:getmap! gget nk:gget grid nk:grid grid-peek nk:grid-peek grid-push nk:grid-push -Builtin group-scroll-ofs nk:group-scroll-ofs group-scroll-ofs! nk:group-scroll-ofs! gset nk:gset hints nk:hints -Builtin hovered? nk:hovered? hrule nk:hrule ident nk:ident image nk:image init nk:init init-flags nk:init-flags -Builtin init-sub nk:init-sub input-button nk:input-button input-key nk:input-key input-motion nk:input-motion -Builtin input-scroll nk:input-scroll input-string nk:input-string key-down? nk:key-down? key-pressed? nk:key-pressed? -Builtin key-released? nk:key-released? knob nk:knob label nk:label label-colored nk:label-colored label-wrap nk:label-wrap -Builtin label-wrap-colored nk:label-wrap-colored layout-bounds nk:layout-bounds layout-grid-begin nk:layout-grid-begin -Builtin layout-grid-end nk:layout-grid-end layout-push-dynamic nk:layout-push-dynamic layout-push-static nk:layout-push-static -Builtin layout-push-variable nk:layout-push-variable layout-ratio-from-pixel nk:layout-ratio-from-pixel +Builtin anti-alias nk:anti-alias any-active nk:any-active any-clicked? nk:any-clicked? app-render nk:app-render +Builtin app-template nk:app-template bounds nk:bounds bounds! nk:bounds! button nk:button button-color nk:button-color +Builtin button-label nk:button-label button-set-behavior nk:button-set-behavior button-symbol nk:button-symbol +Builtin button-symbol-label nk:button-symbol-label calendar nk:calendar chart-add-slot nk:chart-add-slot +Builtin chart-add-slot-colored nk:chart-add-slot-colored chart-push nk:chart-push chart-push-slot nk:chart-push-slot +Builtin checkbox nk:checkbox circle nk:circle clicked? nk:clicked? clipping nk:clipping close-this! nk:close-this! +Builtin close-this? nk:close-this? close? nk:close? color-chooser nk:color-chooser color-picker nk:color-picker +Builtin combo nk:combo combo-begin-color nk:combo-begin-color combo-begin-label nk:combo-begin-label +Builtin combo-cb nk:combo-cb combo-end nk:combo-end content-region nk:content-region contextual-begin nk:contextual-begin +Builtin contextual-close nk:contextual-close contextual-end nk:contextual-end contextual-item-image-text nk:contextual-item-image-text +Builtin contextual-item-symbol-text nk:contextual-item-symbol-text contextual-item-text nk:contextual-item-text +Builtin cp! nk:cp! cp@ nk:cp@ curpos nk:curpos cursor-load nk:cursor-load cursor-set nk:cursor-set +Builtin cursor-show nk:cursor-show density@ nk:density@ display-change nk:display-change display-info nk:display-info +Builtin display-scale@ nk:display-scale@ display@ nk:display@ do nk:do down? nk:down? draw-image nk:draw-image +Builtin draw-image-at nk:draw-image-at draw-image-centered nk:draw-image-centered draw-sub-image nk:draw-sub-image +Builtin draw-text nk:draw-text draw-text-centered nk:draw-text-centered draw-text-high nk:draw-text-high +Builtin draw-text-wrap nk:draw-text-wrap driver nk:driver drivers nk:drivers dropped nk:dropped dropping nk:dropping +Builtin edit-focus nk:edit-focus edit-pwd nk:edit-pwd edit-string nk:edit-string event nk:event event-boost nk:event-boost +Builtin event-msec nk:event-msec event-wait nk:event-wait event? nk:event? file-dlg nk:file-dlg fill-arc nk:fill-arc +Builtin fill-circle nk:fill-circle fill-color nk:fill-color fill-poly nk:fill-poly fill-rect nk:fill-rect +Builtin fill-rect-color nk:fill-rect-color fill-triangle nk:fill-triangle finger nk:finger flags! nk:flags! +Builtin flags@ nk:flags@ flash nk:flash fullscreen nk:fullscreen get nk:get get-row-height nk:get-row-height +Builtin getfont nk:getfont getmap nk:getmap getmap! nk:getmap! gget nk:gget grid nk:grid grid! nk:grid! +Builtin grid-peek nk:grid-peek grid-push nk:grid-push group-scroll-ofs nk:group-scroll-ofs group-scroll-ofs! nk:group-scroll-ofs! +Builtin gset nk:gset hints nk:hints hovered? nk:hovered? hrule nk:hrule ident nk:ident image nk:image +Builtin init nk:init init-flags nk:init-flags init-sub nk:init-sub input-button nk:input-button input-key nk:input-key +Builtin input-motion nk:input-motion input-scroll nk:input-scroll input-string nk:input-string key-down? nk:key-down? +Builtin key-pressed? nk:key-pressed? key-released? nk:key-released? knob nk:knob label nk:label label-colored nk:label-colored +Builtin label-wrap nk:label-wrap label-wrap-colored nk:label-wrap-colored layout-bounds nk:layout-bounds +Builtin layout-grid-begin nk:layout-grid-begin layout-grid-end nk:layout-grid-end layout-push-dynamic nk:layout-push-dynamic +Builtin layout-push-static nk:layout-push-static layout-push-variable nk:layout-push-variable layout-ratio-from-pixel nk:layout-ratio-from-pixel Builtin layout-reset-row-height nk:layout-reset-row-height layout-row nk:layout-row layout-row-begin nk:layout-row-begin Builtin layout-row-dynamic nk:layout-row-dynamic layout-row-end nk:layout-row-end layout-row-height nk:layout-row-height Builtin layout-row-push nk:layout-row-push layout-row-static nk:layout-row-static layout-row-template-begin nk:layout-row-template-begin Builtin layout-row-template-end nk:layout-row-template-end layout-space-begin nk:layout-space-begin Builtin layout-space-end nk:layout-space-end layout-space-push nk:layout-space-push layout-widget-bounds nk:layout-widget-bounds Builtin line-rel nk:line-rel line-to nk:line-to list-begin nk:list-begin list-end nk:list-end list-new nk:list-new -Builtin list-ofs nk:list-ofs list-range nk:list-range m! nk:m! m@ nk:m@ make-style nk:make-style max-vertex-element nk:max-vertex-element -Builtin maximize nk:maximize measure nk:measure measure-font nk:measure-font menu-begin nk:menu-begin -Builtin menu-close nk:menu-close menu-end nk:menu-end menu-item-image nk:menu-item-image menu-item-label nk:menu-item-label -Builtin menu-item-symbol nk:menu-item-symbol menubar-begin nk:menubar-begin menubar-end nk:menubar-end -Builtin minimize nk:minimize mouse-pos nk:mouse-pos move-back nk:move-back move-rel nk:move-rel move-to nk:move-to -Builtin msg nk:msg msgdlg nk:msgdlg ontop nk:ontop option nk:option pen-color nk:pen-color pen-width nk:pen-width -Builtin pix! nk:pix! plot nk:plot plot-fn nk:plot-fn polygon nk:polygon pop-font nk:pop-font popup-begin nk:popup-begin -Builtin popup-close nk:popup-close popup-end nk:popup-end popup-scroll-ofs nk:popup-scroll-ofs popup-scroll-ofs! nk:popup-scroll-ofs! -Builtin progress nk:progress prop-int nk:prop-int pt-in? nk:pt-in? pt>local nk:pt>local pt>screen nk:pt>screen -Builtin push-font nk:push-font raise nk:raise rect-rel nk:rect-rel rect-to nk:rect-to rect>local nk:rect>local -Builtin rect>screen nk:rect>screen released? nk:released? render nk:render render! nk:render! render-loop nk:render-loop -Builtin render-loop-max nk:render-loop-max render-loop-timed nk:render-loop-timed render-timed nk:render-timed -Builtin render@ nk:render@ renderers nk:renderers rendering nk:rendering restore nk:restore rotate nk:rotate -Builtin rotate-rel nk:rotate-rel rtl! nk:rtl! rtl? nk:rtl? safe-bounds nk:safe-bounds save nk:save -Builtin scale nk:scale scale@ nk:scale@ scancode? nk:scancode? screen-saver nk:screen-saver screen-size nk:screen-size -Builtin screen-win-close nk:screen-win-close selectable nk:selectable set nk:set set-font nk:set-font -Builtin set-hint nk:set-hint set-num-vertices nk:set-num-vertices set-radius nk:set-radius setpos nk:setpos -Builtin setwin nk:setwin show nk:show skew nk:skew slider nk:slider slider-int nk:slider-int space nk:space -Builtin spacing nk:spacing start-text nk:start-text stroke-arc nk:stroke-arc stroke-circle nk:stroke-circle -Builtin stroke-curve nk:stroke-curve stroke-line nk:stroke-line stroke-polygon nk:stroke-polygon stroke-polyline nk:stroke-polyline -Builtin stroke-rect nk:stroke-rect stroke-tri nk:stroke-tri style-from-table nk:style-from-table swipe nk:swipe -Builtin swipe-dir-threshold nk:swipe-dir-threshold swipe-threshold nk:swipe-threshold text nk:text -Builtin text-align nk:text-align text-font nk:text-font text-pad nk:text-pad text? nk:text? timer-delay nk:timer-delay -Builtin timer? nk:timer? toast nk:toast tooltip nk:tooltip translate nk:translate tree-pop nk:tree-pop -Builtin tree-state-push nk:tree-state-push triangle nk:triangle use-style nk:use-style vsync nk:vsync -Builtin widget nk:widget widget-bounds nk:widget-bounds widget-disable nk:widget-disable widget-fitting nk:widget-fitting -Builtin widget-high nk:widget-high widget-hovered? nk:widget-hovered? widget-mouse-click-down? nk:widget-mouse-click-down? -Builtin widget-mouse-clicked? nk:widget-mouse-clicked? widget-pos nk:widget-pos widget-size nk:widget-size -Builtin widget-size-allot nk:widget-size-allot widget-wide nk:widget-wide win nk:win win-bounds nk:win-bounds -Builtin win-bounds! nk:win-bounds! win-close nk:win-close win-closed? nk:win-closed? win-collapse nk:win-collapse -Builtin win-collapsed? nk:win-collapsed? win-content-bounds nk:win-content-bounds win-focus nk:win-focus -Builtin win-focused? nk:win-focused? win-hidden? nk:win-hidden? win-high nk:win-high win-hovered? nk:win-hovered? -Builtin win-icon! nk:win-icon! win-pos nk:win-pos win-scroll-ofs nk:win-scroll-ofs win-scroll-ofs! nk:win-scroll-ofs! -Builtin win-show nk:win-show win-size nk:win-size win-title! nk:win-title! win-wide nk:win-wide win? nk:win? -Builtin MAX ns:MAX ! o:! + o:+ +? o:+? ??? o:??? @ o:@ class o:class exec o:exec isa o:isa method o:method -Builtin mutate o:mutate new o:new super o:super POSIX os:POSIX chroot os:chroot devname os:devname -Builtin docker? os:docker? env os:env lang os:lang locales os:locales notify os:notify power-state os:power-state -Builtin region os:region waitpid os:waitpid bezier pdf:bezier bezierq pdf:bezierq circle pdf:circle -Builtin color pdf:color ellipse pdf:ellipse font pdf:font img pdf:img line pdf:line new pdf:new page pdf:page -Builtin page-size pdf:page-size rect pdf:rect save pdf:save size pdf:size text pdf:text text-rotate pdf:text-rotate -Builtin text-size pdf:text-size text-width pdf:text-width text-wrap pdf:text-wrap text-wrap-rotate pdf:text-wrap-rotate -Builtin cast ptr:cast deref ptr:deref len ptr:len null? ptr:null? pack ptr:pack unpack ptr:unpack unpack_orig ptr:unpack_orig -Builtin publish pubsub:publish qsize pubsub:qsize subscribe pubsub:subscribe + q:+ clear q:clear len q:len -Builtin new q:new notify q:notify overwrite q:overwrite peek q:peek pick q:pick pop q:pop push q:push -Builtin remove q:remove shift q:shift size q:size slide q:slide throwing q:throwing wait q:wait ++match r:++match -Builtin +/ r:+/ +match r:+match / r:/ @ r:@ _@ r:_@ len r:len match r:match match[] r:match[] matchall[] r:matchall[] -Builtin new r:new rx r:rx str r:str * rat:* + rat:+ - rat:- / rat:/ >n rat:>n >s rat:>s new rat:new -Builtin proper rat:proper ! rect:! /high rect:/high /wide rect:/wide = rect:= >a rect:>a >pts rect:>pts -Builtin >pts4 rect:>pts4 @ rect:@ center rect:center center-pt rect:center-pt intersect rect:intersect -Builtin new rect:new new-pt rect:new-pt ofs rect:ofs open rect:open pad rect:pad pos rect:pos pt-open rect:pt-open -Builtin pt>a rect:pt>a pt>rect rect:pt>rect pts> rect:pts> restrict rect:restrict shrink rect:shrink -Builtin size rect:size union rect:union ! s:! * s:* + s:+ - s:- / s:/ /scripts s:/scripts /ws s:/ws -Builtin 2len s:2len <+ s:<+ <> s:<> = s:= =ic s:=ic >base64 s:>base64 >ucs2 s:>ucs2 @ s:@ _len s:_len -Builtin append s:append base64> s:base64> clear s:clear cmp s:cmp cmpi s:cmpi compress s:compress count-match s:count-match -Builtin days! s:days! dist s:dist each s:each each! s:each! eachline s:eachline escape s:escape expand s:expand -Builtin expand-env s:expand-env fill s:fill fold s:fold gen-uid s:gen-uid globmatch s:globmatch hexupr s:hexupr -Builtin insert s:insert intl s:intl intl! s:intl! lang s:lang lc s:lc lc? s:lc? len s:len lsub s:lsub -Builtin ltrim s:ltrim map s:map months! s:months! n> s:n> new s:new norm s:norm reduce s:reduce repinsert s:repinsert -Builtin replace s:replace replace! s:replace! rev s:rev rsearch s:rsearch rsub s:rsub rtl s:rtl rtrim s:rtrim -Builtin scan-match s:scan-match script? s:script? search s:search size s:size slice s:slice soundex s:soundex -Builtin strfmap s:strfmap strfmt s:strfmt term s:term text-wrap s:text-wrap tr s:tr transform s:transform -Builtin trim s:trim tsub s:tsub uc s:uc uc? s:uc? ucs2> s:ucs2> utf8? s:utf8? zt s:zt >a set:>a add set:add -Builtin add[] set:add[] del set:del difference set:difference has set:has intersect set:intersect new set:new -Builtin union set:union bits! sio:bits! bits@ sio:bits@ close sio:close enum sio:enum hz! sio:hz! hz@ sio:hz@ -Builtin mode! sio:mode! mode@ sio:mode@ open sio:open open sio:open opts! sio:opts! opts@ sio:opts@ -Builtin read sio:read read sio:read write sio:write write sio:write @ slv:@ auto slv:auto build slv:build -Builtin constraint slv:constraint dump slv:dump edit slv:edit named-variable slv:named-variable new slv:new -Builtin relation slv:relation reset slv:reset suggest slv:suggest term slv:term update slv:update v[] slv:v[] -Builtin variable slv:variable v{} slv:v{} new smtp:new send smtp:send apply-filter snd:apply-filter -Builtin devices? snd:devices? end-record snd:end-record filter snd:filter freq snd:freq gain snd:gain -Builtin gain? snd:gain? init snd:init len snd:len loop snd:loop loop? snd:loop? mix snd:mix new snd:new -Builtin pause snd:pause play snd:play played snd:played rate snd:rate ready? snd:ready? record snd:record -Builtin resume snd:resume seek snd:seek stop snd:stop stopall snd:stopall volume snd:volume volume? snd:volume? -Builtin + st:+ . st:. clear st:clear dot-depth st:dot-depth len st:len list st:list ndrop st:ndrop -Builtin new st:new op! st:op! peek st:peek pick st:pick pop st:pop push st:push roll st:roll shift st:shift -Builtin size st:size slide st:slide swap st:swap throwing st:throwing >buf struct:>buf arr> struct:arr> -Builtin buf struct:buf buf> struct:buf> byte struct:byte double struct:double field! struct:field! -Builtin field@ struct:field@ float struct:float ignore struct:ignore int struct:int long struct:long -Builtin struct; struct:struct; word struct:word ! t:! @ t:@ by-name t:by-name curtask t:curtask def-queue t:def-queue -Builtin def-stack t:def-stack done? t:done? dtor t:dtor err! t:err! err? t:err? errno? t:errno? extra t:extra -Builtin getq t:getq handler t:handler handler@ t:handler@ kill t:kill list t:list main t:main max-exceptions t:max-exceptions -Builtin name! t:name! name@ t:name@ notify t:notify parent t:parent pop t:pop priority t:priority push t:push -Builtin push! t:push! q-notify t:q-notify q-wait t:q-wait qlen t:qlen result t:result set-affinity t:set-affinity -Builtin setq t:setq task t:task task-n t:task-n task-stop t:task-stop ticks t:ticks to? t:to? wait t:wait -Builtin add tree:add binary tree:binary bk tree:bk btree tree:btree cmp! tree:cmp! data tree:data del tree:del -Builtin find tree:find iter tree:iter next tree:next nodes tree:nodes parent tree:parent parse tree:parse -Builtin prev tree:prev root tree:root search tree:search trie tree:trie ! w:! (is) w:(is) @ w:@ alias: w:alias: -Builtin cb w:cb deprecate w:deprecate dlcall w:dlcall dlopen w:dlopen dlsym w:dlsym exec w:exec exec? w:exec? -Builtin ffifail w:ffifail find w:find forget w:forget is w:is name w:name undo w:undo xt w:xt xt> w:xt> -Builtin close ws:close decode ws:decode encode ws:encode encode-nomask ws:encode-nomask gen-accept-header ws:gen-accept-header -Builtin gen-accept-key ws:gen-accept-key opcodes ws:opcodes open ws:open >s xml:>s >txt xml:>txt md-init xml:md-init -Builtin md-parse xml:md-parse parse xml:parse parse-html xml:parse-html parse-stream xml:parse-stream -Builtin getmsg[] zmq:getmsg[] sendmsg[] zmq:sendmsg[] +Builtin list-ofs nk:list-ofs list-range nk:list-range longpress nk:longpress m! nk:m! m@ nk:m@ make-style nk:make-style +Builtin max-vertex-element nk:max-vertex-element maximize nk:maximize measure nk:measure measure-font nk:measure-font +Builtin menu-begin nk:menu-begin menu-close nk:menu-close menu-end nk:menu-end menu-item-image nk:menu-item-image +Builtin menu-item-label nk:menu-item-label menu-item-symbol nk:menu-item-symbol menubar-begin nk:menubar-begin +Builtin menubar-end nk:menubar-end minimize nk:minimize mouse-moved? nk:mouse-moved? mouse-pos nk:mouse-pos +Builtin move-back nk:move-back move-rel nk:move-rel move-to nk:move-to msg nk:msg msgdlg nk:msgdlg +Builtin ontop nk:ontop option nk:option params! nk:params! pen-color nk:pen-color pen-width nk:pen-width +Builtin pinch nk:pinch pix! nk:pix! plot nk:plot plot-fn nk:plot-fn polygon nk:polygon pop-font nk:pop-font +Builtin popup-begin nk:popup-begin popup-close nk:popup-close popup-end nk:popup-end popup-scroll-ofs nk:popup-scroll-ofs +Builtin popup-scroll-ofs! nk:popup-scroll-ofs! progress nk:progress prop-float nk:prop-float prop-int nk:prop-int +Builtin pt-in? nk:pt-in? pt>local nk:pt>local pt>screen nk:pt>screen pump nk:pump push-font nk:push-font +Builtin raise nk:raise rect-rel nk:rect-rel rect-to nk:rect-to rect>local nk:rect>local rect>screen nk:rect>screen +Builtin released? nk:released? render nk:render render! nk:render! render-loop nk:render-loop render-loop-max nk:render-loop-max +Builtin render-loop-timed nk:render-loop-timed render-timed nk:render-timed render@ nk:render@ renderers nk:renderers +Builtin rendering nk:rendering restore nk:restore rotate nk:rotate rotate-rel nk:rotate-rel rtl! nk:rtl! +Builtin rtl? nk:rtl? safe-bounds nk:safe-bounds save nk:save scale nk:scale scale@ nk:scale@ scancode? nk:scancode? +Builtin screen-saver nk:screen-saver screen-size nk:screen-size screen-win-close nk:screen-win-close +Builtin selectable nk:selectable set nk:set set-font nk:set-font set-hint nk:set-hint set-num-vertices nk:set-num-vertices +Builtin set-radius nk:set-radius setpos nk:setpos setwin nk:setwin show nk:show skew nk:skew slider nk:slider +Builtin slider-int nk:slider-int space nk:space spacing nk:spacing start-text nk:start-text stroke-arc nk:stroke-arc +Builtin stroke-circle nk:stroke-circle stroke-curve nk:stroke-curve stroke-line nk:stroke-line stroke-polygon nk:stroke-polygon +Builtin stroke-polyline nk:stroke-polyline stroke-rect nk:stroke-rect stroke-tri nk:stroke-tri style-from-table nk:style-from-table +Builtin swipe nk:swipe text nk:text text-align nk:text-align text-font nk:text-font text-pad nk:text-pad +Builtin text? nk:text? timer-delay nk:timer-delay timer? nk:timer? toast nk:toast tooltip nk:tooltip +Builtin translate nk:translate tree-pop nk:tree-pop tree-state-push nk:tree-state-push triangle nk:triangle +Builtin use-style nk:use-style vsync nk:vsync widget nk:widget widget-bounds nk:widget-bounds widget-disable nk:widget-disable +Builtin widget-fitting nk:widget-fitting widget-high nk:widget-high widget-hovered? nk:widget-hovered? +Builtin widget-mouse-click-down? nk:widget-mouse-click-down? widget-mouse-clicked? nk:widget-mouse-clicked? +Builtin widget-pos nk:widget-pos widget-size nk:widget-size widget-size-allot nk:widget-size-allot +Builtin widget-wide nk:widget-wide win nk:win win-bounds nk:win-bounds win-bounds! nk:win-bounds! win-close nk:win-close +Builtin win-closed? nk:win-closed? win-collapse nk:win-collapse win-collapsed? nk:win-collapsed? win-content-bounds nk:win-content-bounds +Builtin win-focus nk:win-focus win-focused? nk:win-focused? win-hidden? nk:win-hidden? win-high nk:win-high +Builtin win-hovered? nk:win-hovered? win-icon! nk:win-icon! win-pos nk:win-pos win-scroll-ofs nk:win-scroll-ofs +Builtin win-scroll-ofs! nk:win-scroll-ofs! win-show nk:win-show win-size nk:win-size win-title! nk:win-title! +Builtin win-wide nk:win-wide win? nk:win? xchg nk:xchg MAX ns:MAX ! o:! + o:+ +? o:+? ??? o:??? @ o:@ +Builtin class o:class exec o:exec isa o:isa method o:method mutate o:mutate new o:new super o:super +Builtin POSIX os:POSIX chroot os:chroot devname os:devname docker? os:docker? env os:env lang os:lang +Builtin locales os:locales notify os:notify power-state os:power-state region os:region waitpid os:waitpid +Builtin bezier pdf:bezier bezierq pdf:bezierq circle pdf:circle color pdf:color ellipse pdf:ellipse +Builtin font pdf:font img pdf:img line pdf:line new pdf:new page pdf:page page-size pdf:page-size rect pdf:rect +Builtin save pdf:save size pdf:size text pdf:text text-rotate pdf:text-rotate text-size pdf:text-size +Builtin text-width pdf:text-width text-wrap pdf:text-wrap text-wrap-rotate pdf:text-wrap-rotate cast ptr:cast +Builtin deref ptr:deref len ptr:len null? ptr:null? pack ptr:pack unpack ptr:unpack unpack_orig ptr:unpack_orig +Builtin publish pubsub:publish qsize pubsub:qsize subscribe pubsub:subscribe + q:+ >a q:>a clear q:clear +Builtin len q:len new q:new notify q:notify overwrite q:overwrite peek q:peek pick q:pick pop q:pop +Builtin push q:push remove q:remove shift q:shift size q:size slide q:slide throwing q:throwing wait q:wait +Builtin ++match r:++match +/ r:+/ +match r:+match / r:/ @ r:@ _@ r:_@ len r:len match r:match match[] r:match[] +Builtin matchall[] r:matchall[] new r:new rx r:rx str r:str * rat:* + rat:+ - rat:- / rat:/ >n rat:>n +Builtin >s rat:>s new rat:new proper rat:proper ! rect:! /high rect:/high /wide rect:/wide = rect:= +Builtin >a rect:>a >pts rect:>pts >pts4 rect:>pts4 @ rect:@ center rect:center center-pt rect:center-pt +Builtin intersect rect:intersect new rect:new new-pt rect:new-pt ofs rect:ofs open rect:open pad rect:pad +Builtin pos rect:pos pt-open rect:pt-open pt>a rect:pt>a pt>rect rect:pt>rect pts> rect:pts> restrict rect:restrict +Builtin shrink rect:shrink size rect:size union rect:union ! s:! * s:* + s:+ - s:- / s:/ /scripts s:/scripts +Builtin /ws s:/ws 2len s:2len <+ s:<+ <> s:<> = s:= =ic s:=ic >base64 s:>base64 >ucs2 s:>ucs2 @ s:@ +Builtin _len s:_len append s:append base64> s:base64> clear s:clear cmp s:cmp cmpi s:cmpi compress s:compress +Builtin count-match s:count-match days! s:days! dist s:dist each s:each each! s:each! eachline s:eachline +Builtin escape s:escape expand s:expand expand-env s:expand-env fill s:fill fold s:fold gen-uid s:gen-uid +Builtin globmatch s:globmatch hexupr s:hexupr insert s:insert intl s:intl intl! s:intl! lang s:lang +Builtin lc s:lc lc? s:lc? len s:len lsub s:lsub ltrim s:ltrim map s:map months! s:months! n> s:n> new s:new +Builtin norm s:norm reduce s:reduce repinsert s:repinsert replace s:replace replace! s:replace! rev s:rev +Builtin rsearch s:rsearch rsub s:rsub rtl s:rtl rtrim s:rtrim scan-match s:scan-match script? s:script? +Builtin search s:search size s:size slice s:slice soundex s:soundex strfmap s:strfmap strfmt s:strfmt +Builtin term s:term text-wrap s:text-wrap tr s:tr transform s:transform trim s:trim tsub s:tsub uc s:uc +Builtin uc? s:uc? ucs2> s:ucs2> utf8? s:utf8? zt s:zt >a set:>a add set:add add[] set:add[] del set:del +Builtin difference set:difference has set:has intersect set:intersect new set:new union set:union bits! sio:bits! +Builtin bits@ sio:bits@ close sio:close enum sio:enum hz! sio:hz! hz@ sio:hz@ mode! sio:mode! mode@ sio:mode@ +Builtin open sio:open open sio:open opts! sio:opts! opts@ sio:opts@ read sio:read read sio:read write sio:write +Builtin write sio:write @ slv:@ auto slv:auto build slv:build constraint slv:constraint edit slv:edit +Builtin named-variable slv:named-variable new slv:new relation slv:relation reset slv:reset suggest slv:suggest +Builtin term slv:term update slv:update v[] slv:v[] variable slv:variable v{} slv:v{} new smtp:new +Builtin send smtp:send apply-filter snd:apply-filter devices? snd:devices? end-record snd:end-record +Builtin filter snd:filter freq snd:freq gain snd:gain gain? snd:gain? init snd:init len snd:len loop snd:loop +Builtin loop? snd:loop? mix snd:mix new snd:new pause snd:pause play snd:play played snd:played rate snd:rate +Builtin ready? snd:ready? record snd:record resume snd:resume seek snd:seek stop snd:stop stopall snd:stopall +Builtin volume snd:volume volume? snd:volume? + st:+ . st:. >a st:>a clear st:clear dot-depth st:dot-depth +Builtin len st:len list st:list ndrop st:ndrop new st:new op! st:op! peek st:peek pick st:pick pop st:pop +Builtin push st:push roll st:roll shift st:shift size st:size slide st:slide swap st:swap throwing st:throwing +Builtin >buf struct:>buf arr> struct:arr> buf struct:buf buf> struct:buf> byte struct:byte double struct:double +Builtin field! struct:field! field@ struct:field@ float struct:float ignore struct:ignore int struct:int +Builtin long struct:long struct; struct:struct; word struct:word ! t:! @ t:@ by-name t:by-name curtask t:curtask +Builtin def-queue t:def-queue def-stack t:def-stack done? t:done? dtor t:dtor err! t:err! err? t:err? +Builtin errno? t:errno? extra t:extra getq t:getq handler t:handler handler@ t:handler@ kill t:kill +Builtin list t:list main t:main max-exceptions t:max-exceptions name! t:name! name@ t:name@ notify t:notify +Builtin parent t:parent pop t:pop priority t:priority push t:push push! t:push! q-notify t:q-notify +Builtin q-wait t:q-wait qlen t:qlen result t:result set-affinity t:set-affinity setq t:setq task t:task +Builtin task-n t:task-n task-stop t:task-stop ticks t:ticks to? t:to? wait t:wait add tree:add binary tree:binary +Builtin bk tree:bk btree tree:btree cmp! tree:cmp! data tree:data del tree:del find tree:find iter tree:iter +Builtin next tree:next nodes tree:nodes parent tree:parent parse tree:parse prev tree:prev root tree:root +Builtin search tree:search trie tree:trie ! w:! (is) w:(is) @ w:@ alias: w:alias: cb w:cb deprecate w:deprecate +Builtin dlcall w:dlcall dlopen w:dlopen dlsym w:dlsym exec w:exec exec? w:exec? ffifail w:ffifail find w:find +Builtin forget w:forget is w:is name w:name undo w:undo xt w:xt xt> w:xt> close ws:close decode ws:decode +Builtin encode ws:encode encode-nomask ws:encode-nomask gen-accept-header ws:gen-accept-header gen-accept-key ws:gen-accept-key +Builtin opcodes ws:opcodes open ws:open >s xml:>s >txt xml:>txt md-init xml:md-init md-parse xml:md-parse +Builtin parse xml:parse parse-html xml:parse-html parse-stream xml:parse-stream getmsg[] zmq:getmsg[] +Builtin sendmsg[] zmq:sendmsg[] " numbers diff --git a/runtime/syntax/Makefile b/runtime/syntax/Makefile index c18369a0..d0f71270 100644 --- a/runtime/syntax/Makefile +++ b/runtime/syntax/Makefile @@ -13,7 +13,7 @@ VIMRUNTIME = ../.. # Uncomment this line to use valgrind for memory leaks and extra warnings. # VALGRIND = valgrind --tool=memcheck --leak-check=yes --num-callers=45 --log-file=valgrind.$* -# Trace liveness on demand. +# Trace ruler liveness on demand. # VIM_SYNTAX_TEST_LOG = `pwd`/testdir/failed/00-TRACE_LOG # ENVVARS = LC_ALL=C VIM_SYNTAX_TEST_LOG="$(VIM_SYNTAX_TEST_LOG)" @@ -27,7 +27,7 @@ RUN_VIMTEST = VIMRUNTIME=$(VIMRUNTIME) $(VALGRIND) $(ENVVARS) ../$(VIMPROG) -f $ # DEBUGLOG = --log testlog # All initial phony targets; these names may clash with file types. -phonies = clean test testclean +phonies = clean executables test testclean .PHONY: $(phonies) # Run the tests that didn't run yet or failed previously. @@ -39,7 +39,7 @@ test: @# the "vimcmd" file is used by the screendump utils @echo "../$(VIMPROG)" > testdir/vimcmd @echo "$(RUN_VIMTEST)" >> testdir/vimcmd - @# Trace liveness on demand. + @# Trace ruler liveness on demand. @#mkdir -p testdir/failed @#touch "$(VIM_SYNTAX_TEST_LOG)" VIMRUNTIME=$(VIMRUNTIME) $(ENVVARS) $(VIMPROG) --clean --not-a-term $(DEBUGLOG) -u testdir/runtest.vim > /dev/null @@ -53,6 +53,9 @@ testdir/testdeps.mk: -include testdir/testdeps.mk +executables: + @! find testdir/input -type f -perm /a+x -exec echo Executable syntax test found: \{\} \; | grep : + clean testclean: rm -f testdir/failed/* testdir/done/* testdir/vimcmd testdir/messages testdir/Xtestscript testdir/Xfilter testdir/testdeps.mk diff --git a/runtime/syntax/apache.vim b/runtime/syntax/apache.vim index 65317fd3..edc650e9 100644 --- a/runtime/syntax/apache.vim +++ b/runtime/syntax/apache.vim @@ -4,6 +4,7 @@ " License: This file can be redistribued and/or modified under the same terms " as Vim itself. " Last Change: 2024 Nov 24 +" 2026 Feb 19 by Vim project: Add SSLVHostSNIPolicy " Notes: Last synced with apache-2.4.62, version 1.x is no longer supported " TODO: see particular FIXME's scattered through the file " make it really linewise? @@ -163,7 +164,7 @@ syn keyword apacheOption inherit syn keyword apacheDeclaration BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase syn keyword apacheDeclaration LoadFile LoadModule syn keyword apacheDeclaration CheckSpelling CheckCaseOnly -syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCompression SSLCryptoDevice SSLEngine SSLFIPS SSLHonorCipherOrder SSLInsecureRenegotiation SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCheckPeerCN SSLProxyCheckPeerExpire SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateChainFile SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRenegBufferSize SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLSessionTicketKeyFile SSLSessionTickets SSLStrictSNIVHostCheck SSLUserName SSLVerifyClient SSLVerifyDepth +syn keyword apacheDeclaration SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCompression SSLCryptoDevice SSLEngine SSLFIPS SSLHonorCipherOrder SSLInsecureRenegotiation SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCheckPeerCN SSLProxyCheckPeerExpire SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateChainFile SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRenegBufferSize SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLSessionTicketKeyFile SSLSessionTickets SSLStrictSNIVHostCheck SSLUserName SSLVerifyClient SSLVerifyDepth SSLVHostSNIPolicy syn match apacheOption "[+-]\?\<\(StdEnvVars\|CompatEnvVars\|ExportCertData\|FakeBasicAuth\|StrictRequire\|OptRenegotiate\)\>" syn keyword apacheOption builtin sem syn match apacheOption "\(file\|exec\|egd\|dbm\|shm\):" diff --git a/runtime/syntax/bpftrace.vim b/runtime/syntax/bpftrace.vim new file mode 100644 index 00000000..4e23bcbd --- /dev/null +++ b/runtime/syntax/bpftrace.vim @@ -0,0 +1,66 @@ +" Vim syntax file +" Language: bpftrace +" Maintainer: Stanislaw Gruszka +" Last Change: 2025 Dec 22 + +" Quit when a syntax file was already loaded +if exists("b:current_syntax") + finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +syn keyword bpftraceConditional if else +syn keyword bpftraceRepeat while for unroll +syn keyword bpftraceStatement break continue return +syn keyword bpftraceKeyword let macro import config +syn keyword bpftraceOperator sizeof offsetof + +syn keyword bpftraceProbe BEGIN END begin end +syn match bpftraceProbe "\v<(bench|self|test)\ze:" +syn match bpftraceProbe "\v<(fentry|fexit|kfunc|kretfunc|kprobe|kretprobe)\ze:" +syn match bpftraceProbe "\v<(profile|interval|iterator|hardware|software|uprobe|uretprobe)\ze:" +syn match bpftraceProbe "\v<(usdt|tracepoint|rawtracepoint|watchpoint|asyncwatchpoint)\ze:" +syn match bpftraceProbe "\v(^|[^:])<\zs(h|i|it|f|fr|k|kr|p|rt|s|t|u|ur|U|w|aw)\ze:" + +syn keyword bpftraceType bool int8 int16 int32 int64 +syn keyword bpftraceType uint8 uint16 uint32 uint64 +syn keyword bpftraceType struct + +syn match bpftraceMacro "\<\h\w*\ze\_s*(" + +syn match bpftraceNumber display "[+-]\=\<\d\+\>" +syn match bpftraceNumber display "\<0x\x\+\>" + +syn keyword bpftraceBoolean true false + +syn region bpftraceString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell extend + +syn keyword bpftraceTodo contained TODO FIXME XXX +syn match bpftraceShebang /\%^#![^[].*/ +syn region bpftraceCommentLine start="//" end="$" contains=bpftraceTodo,@Spell +syn region bpftraceCommentBlock matchgroup=bpftraceCommentBlock start="/\*" end="\*/" contains=bpftraceTodo,@Spell + +" Define the default highlighting. +hi def link bpftraceConditional Conditional +hi def link bpftraceMacro Macro +hi def link bpftraceRepeat Repeat +hi def link bpftraceKeyword Keyword +hi def link bpftraceNumber Number +hi def link bpftraceBoolean Boolean +hi def link bpftraceShebang Comment +hi def link bpftraceCommentLine Comment +hi def link bpftraceCommentBlock Comment +hi def link bpftraceString String +hi def link bpftraceType Type +hi def link bpftraceProbe Identifier + +syn sync minlines=100 + +let b:current_syntax = "bpftrace" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: ts=8 sw=8 noexpandtab diff --git a/runtime/syntax/c.vim b/runtime/syntax/c.vim index 68b6778c..64bcd3e3 100644 --- a/runtime/syntax/c.vim +++ b/runtime/syntax/c.vim @@ -1,7 +1,7 @@ " Vim syntax file " Language: C " Maintainer: The Vim Project -" Last Change: 2025 Jan 18 +" Last Change: 2026 Jan 13 " Former Maintainer: Bram Moolenaar " Quit when a (custom) syntax file was already loaded @@ -326,7 +326,10 @@ if !exists("c_no_c11") syn keyword cOperator _Alignof alignof syn keyword cStorageClass _Atomic syn keyword cOperator _Generic - syn keyword cStorageClass _Noreturn noreturn + syn keyword cStorageClass _Noreturn + if !s:in_cpp_family + syn keyword cStorageClass noreturn + endif syn keyword cOperator _Static_assert static_assert syn keyword cStorageClass _Thread_local thread_local syn keyword cType char16_t char32_t @@ -421,8 +424,10 @@ if !exists("c_no_ansi") || exists("c_ansi_constants") || exists("c_gnu") syn keyword cConstant NDEBUG " POSIX 2001 syn keyword cConstant SIGBUS SIGPOLL SIGPROF SIGSYS SIGURG SIGVTALRM SIGXCPU SIGXFSZ + " POSIX Issue 8 (post 2017) + syn keyword cConstant SIGWINCH " non-POSIX signals - syn keyword cConstant SIGWINCH SIGINFO + syn keyword cConstant SIGINFO SIGIO " Add POSIX errors as well. List comes from: " http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/errno.h.html syn keyword cConstant E2BIG EACCES EADDRINUSE EADDRNOTAVAIL EAFNOSUPPORT EAGAIN EALREADY EBADF diff --git a/runtime/syntax/cangjie.vim b/runtime/syntax/cangjie.vim index 1e8b8721..d8194a92 100644 --- a/runtime/syntax/cangjie.vim +++ b/runtime/syntax/cangjie.vim @@ -2,7 +2,7 @@ " Language: Cangjie " Maintainer: Wu Junkai " URL: https://github.com/WuJunkai2004/cangjie.vim -" Last Change: 2025 Oct 12 +" Last Change: 2026 Jan 5 " " The Cangjie programming language is a new-generation programming " language oriented to full-scenario intelligence. It features @@ -33,9 +33,13 @@ endfunction syn case match " 1. comments -syn keyword cangjieTodo TODO FIXME XXX NOTE BUG contained -syn match cangjieComment /\v\/\/.*/ contains=cangjieTodo -syn region cangjieComment start=/\/\*/ end=/\*\// contains=cangjieTodo,@Spell +syn keyword cangjieTodo TODO FIXME XXX NOTE BUG contained +syn match cangjieDocKeyword /\v\c\@(brief|param|return|note|warning|deprecated)/ contained +syn match cangjieDocKeyword /\v\c\@(author|version|date|since|file|copyright)/ contained +syn match cangjieDocKeyword /\v\c\@(details|link|see|throws|exception|example)/ contained +syn match cangjieDocKeyword /\v\c\@(private|protected|public|internal)/ contained +syn match cangjieComment /\v\/\/.*/ contains=cangjieTodo,cangjieDocKeyword +syn region cangjieComment start=/\/\*/ end=/\*\// contains=cangjieTodo,cangjieDocKeyword,@spell " 2. keywords syn keyword cangjieDeclaration abstract extend macro foreign @@ -65,27 +69,48 @@ syn match cangjieTypeName /\h\w*/ contained syn region cangjieSpIdentifier start=/`/ end=/`/ oneline " 6. types -syn keyword cangjieSpType Any Nothing Range Unit Iterable -syn keyword cangjieArrayType Array ArrayList VArray -syn keyword cangjieHashType HashMap HashSet +syn keyword cangjieSpType Nothing Range Unit LibC Duration DefaultHasher +syn keyword cangjieArrayType Array VArray syn keyword cangjieCommonType Bool Byte Rune String syn keyword cangjieFloatType Float16 Float32 Float64 -syn keyword cangjieIntType Int8 Int16 Int32 Int64 IntNative -syn keyword cangjieUIntType UInt8 UInt16 UInt32 UInt64 UIntNative +syn keyword cangjieIntType Int Int8 Int16 Int32 Int64 IntNative +syn keyword cangjieUIntType UInt UInt8 UInt16 UInt32 UInt64 UIntNative +syn keyword cangjieFFIType CPointer CPointerHandle CPointerResource CString CStringResource syn cluster cangjieTypeCluster contains= \ cangjieSpType, \ cangjieArrayType, - \ cangjieHashType, \ cangjieCommonType, \ cangjieFloatType, \ cangjieIntType, - \ cangjieUIntType + \ cangjieUIntType, + \ cangjieFFIType + +" 6.1. builtin function/interface/class +syn keyword cangjieCoreFunc acquireArrayRawData alignOf eprint eprintln ifNone ifSome max min +syn keyword cangjieCoreFunc print println readln refEq releaseArrayRawData sizeOf sleep zeroValue +syn keyword cangjieCoreItf Any Hasher ThreadContext Countable Collection Less Greater +syn keyword cangjieCoreItf LessOrEqual GreaterOrEqual Comparable Equal NotEqual Equatable +syn keyword cangjieCoreItf Hashable Iterable Resource ToString CType +syn keyword cangjieCoreClass ArrayIterator Box Future Iterator Object RangeIterator +syn keyword cangjieCoreClass StackTraceElement StringBuilder Thread ThreadLocal +syn keyword cangjieCoreError ArithmeticException Error Exception IllegalArgumentException +syn keyword cangjieCoreError IllegalFormatException IllegalMemoryException IllegalStateException +syn keyword cangjieCoreError IncompatiblePackageException IndexOutOfBoundsException InternalError +syn keyword cangjieCoreError NegativeArraySizeException NoneValueException OutOfMemoryError +syn keyword cangjieCoreError OverflowException SpawnException StackOverflowError +syn keyword cangjieCoreError TimeoutException UnsupportedException +syn cluster cangjieBuiltinCluster contains= + \ cangjieCoreFunc, + \ cangjieCoreItf, + \ cangjieCoreClass, + \ cangjieCoreError " 7. character and strings syn cluster cangjieInterpolatedPart contains= \ @cangjieKeywordCluster, \ cangjieSpIdentifier, \ @cangjieTypeCluster, + \ @cangjieBuiltinCluster, \ @cangjieNumberCluster, \ cangjieOperator syn region cangjieInterpolation contained keepend start=/\${/ end=/}/ contains=@cangjieInterpolatedPart @@ -139,6 +164,7 @@ syn region cangjieFoldBrackets transparent fold start='\[' end='\]' contains=ALL " finally, link the syntax groups to the highlight groups if s:enabled('comment') hi def link cangjieTodo Todo + hi def link cangjieDocKeyword SpecialComment hi def link cangjieComment Comment endif if s:enabled('identifier') @@ -151,6 +177,12 @@ if s:enabled('keyword') hi def link cangjieVariable Keyword hi def link cangjieOption Keyword endif +if s:enabled('builtin') + hi def link cangjieCoreFunc Function + hi def link cangjieCoreItf Type + hi def link cangjieCoreClass Type + hi def link cangjieCoreError Structure +endif if s:enabled('macro') hi def link cangjieMacro PreProc endif @@ -178,11 +210,11 @@ if s:enabled('type') hi def link cangjieTypeName Type hi def link cangjieSpType Type hi def link cangjieArrayType Type - hi def link cangjieHashType Type hi def link cangjieCommonType Type hi def link cangjieFloatType Type hi def link cangjieIntType Type hi def link cangjieUIntType Type + hi def link cangjieFFIType Type endif let b:current_syntax = "cangjie" diff --git a/runtime/syntax/context.vim b/runtime/syntax/context.vim index c5bbbb47..07b59c0f 100644 --- a/runtime/syntax/context.vim +++ b/runtime/syntax/context.vim @@ -4,7 +4,7 @@ vim9script # Language: ConTeXt typesetting engine # Maintainer: Nicola Vitacolonna # Former Maintainers: Nikolai Weibull -# Latest Revision: 2023 Dec 26 +# Latest Revision: 2026 Jan 10 if exists("b:current_syntax") finish diff --git a/runtime/syntax/cpp.vim b/runtime/syntax/cpp.vim index ff1226b7..5ea52ec5 100644 --- a/runtime/syntax/cpp.vim +++ b/runtime/syntax/cpp.vim @@ -1,9 +1,12 @@ " Vim syntax file " Language: C++ -" Current Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) -" Previous Maintainer: Ken Shan +" Maintainer: This runtime file is looking for a new maintainer. +" Previous Maintainer: vim-jp (https://github.com/vim-jp/vim-cpp) +" Ken Shan " Last Change: 2024 May 04 -" 2024 May 04 by Vim Project (fix digit separator in octals and floats) +" 2024 May 04 by Vim Project fix digit separator in octals and floats +" 2026 Jan 06 by Vim Project orphaning announcement +" 2026 Jan 08 by Vim Project highlight capital letter prefixes for numbers " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -57,11 +60,11 @@ if !exists("cpp_no_cpp14") syn match cppNumber display contained "\<0\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" syn match cppNumber display contained "\<[1-9]\('\=\d\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" syn match cppNumber display contained "\<0\('\=\o\+\)\+\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppNumber display contained "\<0b[01]\('\=[01]\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppNumber display contained "\<0x\x\('\=\x\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppFloat display contained "\<\d\('\=\d\+\)*\.\(\d\('\=\d\+\)*\)\=\(e[-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppFloat display contained "\.\d\('\=\d\+\)*\(e[-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" - syn match cppFloat display contained "\<\d\+e[-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppNumber display contained "\<0[Bb][01]\('\=[01]\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppNumber display contained "\<0[Xx]\x\('\=\x\+\)*\([Uu]\=\([Ll]\|LL\|ll\)\|\([Ll]\|LL\|ll\)\=[Uu]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<\d\('\=\d\+\)*\.\(\d\('\=\d\+\)*\)\=\([Ee][-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\.\d\('\=\d\+\)*\([Ee][-+]\=\d\+\)\=\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<\d\+[Ee][-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" syn region cppString start=+\(L\|u\|u8\|U\)\="+ skip=+\\\\\|\\"\|\\$+ excludenl end=+"\(sv\|s\|_\i*\)\=+ end='$' contains=cSpecial,cFormat,@Spell endif @@ -69,8 +72,8 @@ endif if !exists("cpp_no_cpp17") syn match cppCast "\" - syn match cppFloat display contained "\<0x\x\+\.\=p[-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<0[Xx]\x*\.\x\+p[-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" + syn match cppFloat display contained "\<0[Xx]\x\+\.\=p[-+]\=\d\+\([FfLl]\|i[fl]\=\|h\|min\|s\|ms\|us\|ns\|_\i*\)\=\>" " TODO: push this up to c.vim if/when supported in C23 syn match cppCharacter "u8'[^\\]'" @@ -92,8 +95,8 @@ if !exists("cpp_no_cpp20") syn match cppNumber display contained "\<0\(y\|d\)\>" syn match cppNumber display contained "\<[1-9]\('\=\d\+\)*\(y\|d\)\>" syn match cppNumber display contained "\<0\o\+\(y\|d\)\>" - syn match cppNumber display contained "\<0b[01]\('\=[01]\+\)*\(y\|d\)\>" - syn match cppNumber display contained "\<0x\x\('\=\x\+\)*\(y\|d\)\>" + syn match cppNumber display contained "\<0[Bb][01]\('\=[01]\+\)*\(y\|d\)\>" + syn match cppNumber display contained "\<0[Xx]\x\('\=\x\+\)*\(y\|d\)\>" syn keyword cppStatement co_await co_return co_yield requires syn keyword cppStorageClass consteval constinit syn keyword cppStructure concept diff --git a/runtime/syntax/csh.vim b/runtime/syntax/csh.vim index 0ad85adf..cf1c68d6 100644 --- a/runtime/syntax/csh.vim +++ b/runtime/syntax/csh.vim @@ -1,10 +1,8 @@ " Vim syntax file -" Language: C-shell (csh) -" Maintainer: This runtime file is looking for a new maintainer. -" Former Maintainer: Charles E. Campbell -" Last Change: Aug 31, 2016 -" Version: 14 -" Former URL: http://www.drchip.org/astronaut/vim/index.html#SYNTAX_CSH +" Language: C-shell (csh) +" Maintainer: Doug Kearns +" Former Maintainer: Charles E. Campbell +" Last Change: 2026 Jan 16 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -40,7 +38,7 @@ syn region cshDblQuote start=+^"+ skip=+\\\\\|\\"+ end=+"+ contains=cshSpecial syn region cshSnglQuote start=+^'+ skip=+\\\\\|\\'+ end=+'+ contains=cshNoEndlineSQ,@Spell syn region cshBckQuote start=+^`+ skip=+\\\\\|\\`+ end=+`+ contains=cshNoEndlineBQ,@Spell syn cluster cshCommentGroup contains=cshTodo,@Spell -syn match cshComment "#.*$" contains=@cshCommentGroup +syn match cshComment "#.*" contains=@cshCommentGroup " A bunch of useful csh keywords syn keyword cshStatement alias end history onintr setenv unalias diff --git a/runtime/syntax/css.vim b/runtime/syntax/css.vim index f4d09cfa..3f287179 100644 --- a/runtime/syntax/css.vim +++ b/runtime/syntax/css.vim @@ -8,6 +8,9 @@ " URL: https://github.com/vim-language-dept/css-syntax.vim " Maintainer: Jay Sitter " Last Change: 2024 Mar 2 +" Changelog: +" 2025 Nov 11: improve support for cssBoxProperties #18717 +" 2026 Feb 13: add missing numeric units (baseline 2015, 2020, 2022, 2023, 2026) #19325 " quit when a syntax file was already loaded if !exists("main_syntax") @@ -70,12 +73,14 @@ 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\|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 -syn match cssValueFrequency contained "+\=\d\+\(\.\d*\)\=\(Hz\|kHz\)\>" contains=cssUnitDecorators +syn match cssValueNumber contained "[-+]\=\d\+\%(\.\d*\)\=" contains=cssUnitDecorators +syn match cssValueLength contained "[-+]\=\d\+\%(\.\d*\)\=\%(mm\|cm\|in\|pt\|pc\|px\|dpi\|dppx\|dpcm\|fr\|Q\|x\)\>" contains=cssUnitDecorators +syn match cssValueLength contained "[-+]\=\d\+\%(\.\d*\)\=r\=\%(em\|ex\|cap\|lh\|ch\|ic\)\>" contains=cssUnitDecorators +syn match cssValueLength contained "[-+]\=\d\+\%(\.\d*\)\=[dls]\=\%(vb\|vh\|vi\|vmax\|vmin\|vw\)\>" contains=cssUnitDecorators +syn match cssValueLength contained "[-+]\=\d\+\%(\.\d*\)\=%" contains=cssUnitDecorators +syn match cssValueAngle contained "[-+]\=\d\+\%(\.\d*\)\=\%(deg\|grad\|rad\|turn\)\>" contains=cssUnitDecorators +syn match cssValueTime contained "+\=\d\+\%(\.\d*\)\=\%(ms\|s\)\>" contains=cssUnitDecorators +syn match cssValueFrequency contained "+\=\d\+\%(\.\d*\)\=\%(Hz\|kHz\)\>" contains=cssUnitDecorators " The 16 basic color names syn keyword cssColor contained aqua black blue fuchsia gray green lime maroon navy olive purple red silver teal yellow @@ -84,23 +89,23 @@ syn keyword cssColor contained aqua black blue fuchsia gray green lime maroon na syn keyword cssColor contained aliceblue antiquewhite aquamarine azure syn keyword cssColor contained beige bisque blanchedalmond blueviolet brown burlywood syn keyword cssColor contained cadetblue chartreuse chocolate coral cornflowerblue cornsilk crimson cyan -syn match cssColor contained /\/ -syn match cssColor contained /\/ -syn match cssColor contained /\/ -syn match cssColor contained /\/ +syn match cssColor contained /\/ +syn match cssColor contained /\/ +syn match cssColor contained /\/ +syn match cssColor contained /\/ syn keyword cssColor contained deeppink deepskyblue dimgray dimgrey dodgerblue firebrick syn keyword cssColor contained floralwhite forestgreen gainsboro ghostwhite gold syn keyword cssColor contained goldenrod greenyellow grey honeydew hotpink syn keyword cssColor contained indianred indigo ivory khaki lavender lavenderblush lawngreen syn keyword cssColor contained lemonchiffon limegreen linen magenta -syn match cssColor contained /\/ -syn match cssColor contained /\/ -syn match cssColor contained /\/ -syn match cssColor contained /\/ -syn match cssColor contained /\/ +syn match cssColor contained /\/ +syn match cssColor contained /\/ +syn match cssColor contained /\/ +syn match cssColor contained /\/ +syn match cssColor contained /\/ syn keyword cssColor contained midnightblue mintcream mistyrose moccasin navajowhite syn keyword cssColor contained oldlace olivedrab orange orangered orchid -syn match cssColor contained /\/ +syn match cssColor contained /\/ syn keyword cssColor contained papayawhip peachpuff peru pink plum powderblue syn keyword cssColor contained rosybrown royalblue rebeccapurple saddlebrown salmon syn keyword cssColor contained sandybrown seagreen seashell sienna skyblue slateblue @@ -125,25 +130,25 @@ syn match cssColor contained "#\x\{3,4\}\>" contains=cssUnitDecorators syn match cssColor contained "#\x\{6\}\>" contains=cssUnitDecorators syn match cssColor contained "#\x\{8\}\>" contains=cssUnitDecorators -syn region cssURL contained matchgroup=cssFunctionName start="\<\(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline +syn region cssURL contained matchgroup=cssFunctionName start="\<\%(uri\|url\|local\|format\)\s*(" end=")" contains=cssStringQ,cssStringQQ oneline syn region cssMathGroup contained matchgroup=cssMathParens start="(" end=")" containedin=cssFunction,cssMathGroup contains=cssCustomProp,cssValue.*,cssFunction,cssColor,cssStringQ,cssStringQQ oneline -syn region cssFunction contained matchgroup=cssFunctionName start="\<\(var\|calc\)\s*(" end=")" contains=cssCustomProp,cssValue.*,cssFunction,cssURL,cssColor,cssStringQ,cssStringQQ oneline -syn region cssFunction contained matchgroup=cssFunctionName start="\<\(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma -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-\|conic-\)\=\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 region cssFunction contained matchgroup=cssFunctionName start="\<\%(var\|calc\)\s*(" end=")" contains=cssCustomProp,cssValue.*,cssFunction,cssURL,cssColor,cssStringQ,cssStringQQ oneline +syn region cssFunction contained matchgroup=cssFunctionName start="\<\%(rgb\|clip\|attr\|counter\|rect\|cubic-bezier\|steps\)\s*(" end=")" oneline contains=cssValueInteger,cssValueNumber,cssValueLength,cssFunctionComma +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-\|conic-\)\=\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\>" +syn match cssCommonAttr contained "\<\%(max-\|min-\|fit-\)content\>" "------------------------------------------------ " CSS Animations " http://www.w3.org/TR/css3-animations/ -syn match cssAnimationProp contained "\" +syn match cssAnimationProp contained "\" " animation-direction attributes syn keyword cssAnimationAttr contained alternate reverse @@ -160,7 +165,7 @@ syn keyword cssAnimationAttr contained infinite "------------------------------------------------ " CSS Backgrounds and Borders Module Level 3 " http://www.w3.org/TR/css3-background/ -syn match cssBackgroundProp contained "\" +syn match cssBackgroundProp contained "\" " background-attachment attributes syn keyword cssBackgroundAttr contained scroll fixed local @@ -169,16 +174,16 @@ syn keyword cssBackgroundAttr contained left center right top bottom " background-repeat attributes syn match cssBackgroundAttr contained "\" -syn match cssBackgroundAttr contained "\" +syn match cssBackgroundAttr contained "\" " background-size attributes syn keyword cssBackgroundAttr contained cover contain -syn match cssBorderProp contained "\" -syn match cssBorderProp contained "\" -syn match cssBorderProp contained "\" -syn match cssBorderProp contained "\" -syn match cssBorderProp contained "\" +syn match cssBorderProp contained "\" +syn match cssBorderProp contained "\" +syn match cssBorderProp contained "\" +syn match cssBorderProp contained "\" +syn match cssBorderProp contained "\" syn match cssBorderProp contained "\" syn match cssBorderProp contained "\" @@ -195,13 +200,13 @@ syn keyword cssBorderAttr contained thin thick medium syn keyword cssBorderAttr contained clone slice "------------------------------------------------ -syn match cssBoxProp contained "\" -syn match cssBoxProp contained "\" -syn match cssBoxProp contained "\<\(margin\|padding\)\(-\(inline\|block\)\(-\(start\|end\)\)\)\=\>" -syn match cssBoxProp contained "\" -syn match cssBoxProp contained "\" +syn match cssBoxProp contained "\" +syn match cssBoxProp contained "\" +syn match cssBoxProp contained "\<\%(margin\|padding\)\%(-\%(inline\|block\)\%(-\%(start\|end\)\)\=\)\=\>" +syn match cssBoxProp contained "\" +syn match cssBoxProp contained "\" syn keyword cssBoxAttr contained visible hidden scroll auto -syn match cssBoxAttr contained "\" +syn match cssBoxAttr contained "\" syn keyword cssCascadeProp contained all syn keyword cssCascadeAttr contained initial unset revert @@ -211,7 +216,7 @@ syn match cssColorProp contained "\" syn match cssColorProp contained "\" -syn match cssDimensionProp contained "\<\(min\|max\)-\(width\|height\)\>" +syn match cssDimensionProp contained "\<\%(min\|max\)-\%(width\|height\)\>" syn keyword cssDimensionProp contained height syn keyword cssDimensionProp contained width @@ -219,32 +224,32 @@ syn keyword cssDimensionProp contained width " http://www.w3.org/TR/css3-flexbox/ " CSS Box Alignment Module Level 3 " http://www.w3.org/TR/css-align-3/ -syn match cssFlexibleBoxProp contained "\" -syn match cssFlexibleBoxProp contained "\<\(align\|justify\)\(-\(items\|self\|content\)\)\=\>" +syn match cssFlexibleBoxProp contained "\" +syn match cssFlexibleBoxProp contained "\<\%(align\|justify\)\%(-\%(items\|self\|content\)\)\=\>" syn keyword cssFlexibleBoxProp contained order -syn match cssFlexibleBoxAttr contained "\<\(row\|column\|wrap\)\(-reverse\)\=\>" +syn match cssFlexibleBoxAttr contained "\<\%(row\|column\|wrap\)\%(-reverse\)\=\>" syn keyword cssFlexibleBoxAttr contained nowrap stretch baseline center -syn match cssFlexibleBoxAttr contained "\" -syn match cssFlexibleBoxAttr contained "\" +syn match cssFlexibleBoxAttr contained "\" +syn match cssFlexibleBoxAttr contained "\" " CSS Fonts Module Level 3 " http://www.w3.org/TR/css-fonts-3/ -syn match cssFontProp contained "\" +syn match cssFontProp contained "\" " font attributes syn keyword cssFontAttr contained icon menu caption syn match cssFontAttr contained "\" syn match cssFontAttr contained "\" syn keyword cssFontAttr contained larger smaller -syn match cssFontAttr contained "\<\(x\{1,2\}-\)\=\(large\|small\)\>" -syn match cssFontAttr contained "\" +syn match cssFontAttr contained "\<\%(x\{1,2\}-\)\=\%(large\|small\)\>" +syn match cssFontAttr contained "\" " font-family attributes syn keyword cssFontAttr contained sans-serif serif cursive fantasy monospace " font-feature-settings attributes syn keyword cssFontAttr contained on off " font-stretch attributes -syn match cssFontAttr contained "\<\(\(ultra\|extra\|semi\)-\)\=\(condensed\|expanded\)\>" +syn match cssFontAttr contained "\<\%(\%(ultra\|extra\|semi\)-\)\=\%(condensed\|expanded\)\>" " font-style attributes syn keyword cssFontAttr contained italic oblique " font-synthesis attributes @@ -258,89 +263,89 @@ syn keyword cssFontAttr contained auto block swap fallback optional " Webkit specific property/attributes syn match cssFontProp contained "\" -syn match cssFontAttr contained "\<\(subpixel-\)\=\antialiased\>" +syn match cssFontAttr contained "\<\%(subpixel-\)\=\antialiased\>" " CSS Multi-column Layout Module " http://www.w3.org/TR/css3-multicol/ -syn match cssMultiColumnProp contained "\" -syn match cssMultiColumnProp contained "\" +syn match cssMultiColumnProp contained "\" +syn match cssMultiColumnProp contained "\" syn keyword cssMultiColumnProp contained columns syn keyword cssMultiColumnAttr contained balance medium syn keyword cssMultiColumnAttr contained always left right page column -syn match cssMultiColumnAttr contained "\" +syn match cssMultiColumnAttr contained "\" " http://www.w3.org/TR/css3-break/#page-break -syn match cssMultiColumnProp contained "\" +syn match cssMultiColumnProp contained "\" " http://www.w3.org/TR/SVG11/interact.html syn match cssInteractProp contained "\" -syn match cssInteractAttr contained "\<\(visible\)\=\(Painted\|Fill\|Stroke\)\=\>" +syn match cssInteractAttr contained "\<\%(visible\)\=\%(Painted\|Fill\|Stroke\)\=\>" " TODO find following items in w3c docs. syn keyword cssGeneratedContentProp contained quotes crop -syn match cssGeneratedContentProp contained "\" +syn match cssGeneratedContentProp contained "\" syn match cssGeneratedContentProp contained "\" syn match cssGeneratedContentProp contained "\" -syn match cssGeneratedContentAttr contained "\<\(no-\)\=\(open\|close\)-quote\>" +syn match cssGeneratedContentAttr contained "\<\%(no-\)\=\%(open\|close\)-quote\>" " https://www.w3.org/TR/css-grid-1/ syn match cssGridProp contained "\" -syn match cssGridProp contained "\" -syn match cssGridProp contained "\<\(grid-\)\=\(column\|row\)\(-\(start\|end\|gap\)\)\=\>" -syn match cssGridProp contained "\" +syn match cssGridProp contained "\" +syn match cssGridProp contained "\<\%(grid-\)\=\%(column\|row\)\%(-\%(start\|end\|gap\)\)\=\>" +syn match cssGridProp contained "\" syn match cssGridProp contained "\" -syn match cssGridProp contained "\" +syn match cssGridProp contained "\" -syn match cssHyerlinkProp contained "\" +syn match cssHyerlinkProp contained "\" -syn match cssListProp contained "\" -syn match cssListAttr contained "\<\(lower\|upper\)-\(roman\|alpha\|greek\|latin\)\>" -syn match cssListAttr contained "\<\(hiragana\|katakana\)\(-iroha\)\=\>" -syn match cssListAttr contained "\<\(decimal\(-leading-zero\)\=\|cjk-ideographic\)\>" +syn match cssListProp contained "\" +syn match cssListAttr contained "\<\%(lower\|upper\)-\%(roman\|alpha\|greek\|latin\)\>" +syn match cssListAttr contained "\<\%(hiragana\|katakana\)\%(-iroha\)\=\>" +syn match cssListAttr contained "\<\%(decimal\%(-leading-zero\)\=\|cjk-ideographic\)\>" syn keyword cssListAttr contained disc circle square hebrew armenian georgian syn keyword cssListAttr contained inside outside " object-fit https://www.w3.org/TR/css-images-3/#the-object-fit -syn match cssObjectProp contained "\" +syn match cssObjectProp contained "\" syn keyword cssObjectAttr contained fill contain cover scale-down syn keyword cssPositioningProp contained bottom clear clip display float left syn keyword cssPositioningProp contained position right top visibility syn match cssPositioningProp contained "\" syn keyword cssPositioningAttr contained block compact grid -syn match cssPositioningAttr contained "\" +syn match cssPositioningAttr contained "\" syn keyword cssPositioningAttr contained left right both syn match cssPositioningAttr contained "\" -syn match cssPositioningAttr contained "\" -syn match cssPositioningAttr contained "\" +syn match cssPositioningAttr contained "\" +syn match cssPositioningAttr contained "\" syn keyword cssPositioningAttr contained static relative absolute fixed subgrid sticky syn keyword cssPrintAttr contained landscape portrait crop cross always -syn match cssTableProp contained "\<\(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>" +syn match cssTableProp contained "\<\%(caption-side\|table-layout\|border-collapse\|border-spacing\|empty-cells\)\>" syn keyword cssTableAttr contained fixed collapse separate show hide once always syn keyword cssTextProp contained color direction hyphens -syn match cssTextProp "\<\(\(word\|letter\)-spacing\|text\(-\(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>" -syn match cssTextProp contained "\" -syn match cssTextProp contained "\<\(word\|line\)-break\|\(overflow\|word\)-wrap\>" +syn match cssTextProp "\<\%(\%(word\|letter\)-spacing\|text\%(-\%(decoration\|transform\|align\|index\|shadow\)\)\=\|vertical-align\|unicode-bidi\|line-height\)\>" +syn match cssTextProp contained "\" +syn match cssTextProp contained "\<\%(word\|line\)-break\|\%(overflow\|word\)-wrap\>" syn match cssTextProp contained "\" syn match cssTextProp contained "\" syn match cssTextProp contained "\" syn match cssTextProp contained "\" syn match cssTextAttr contained "\" -syn match cssTextAttr contained "\<\(text-\)\=\(top\|bottom\)\>" +syn match cssTextAttr contained "\<\%(text-\)\=\%(top\|bottom\)\>" syn keyword cssTextAttr contained ltr rtl embed nowrap syn keyword cssTextAttr contained underline overline blink sub super middle syn keyword cssTextAttr contained capitalize uppercase lowercase syn keyword cssTextAttr contained justify baseline sub super syn keyword cssTextAttr contained optimizeLegibility optimizeSpeed geometricPrecision -syn match cssTextAttr contained "\" -syn match cssTextAttr contained "\<\(allow\|force\)-end\>" +syn match cssTextAttr contained "\" +syn match cssTextAttr contained "\<\%(allow\|force\)-end\>" syn keyword cssTextAttr contained start end adjacent -syn match cssTextAttr contained "\" +syn match cssTextAttr contained "\" syn keyword cssTextAttr contained distribute kashida first last syn keyword cssTextAttr contained clip ellipsis unrestricted suppress syn match cssTextAttr contained "\" @@ -348,40 +353,40 @@ syn match cssTextAttr contained "\" syn keyword cssTextAttr contained manual syn match cssTextAttr contained "\" -syn match cssTransformProp contained "\" -syn match cssTransformProp contained "\" +syn match cssTransformProp contained "\" +syn match cssTransformProp contained "\" syn match cssTransformProp contained "\" " CSS Transitions " http://www.w3.org/TR/css3-transitions/ -syn match cssTransitionProp contained "\" +syn match cssTransitionProp contained "\" " transition-time-function attributes -syn match cssTransitionAttr contained "\" -syn match cssTransitionAttr contained "\" -syn match cssTransitionAttr contained "\" +syn match cssTransitionAttr contained "\" +syn match cssTransitionAttr contained "\" +syn match cssTransitionAttr contained "\" "------------------------------------------------ " CSS Basic User Interface Module Level 3 (CSS3 UI) " http://www.w3.org/TR/css3-ui/ syn match cssUIProp contained "\" -syn match cssUIAttr contained "\<\(content\|padding\|border\)\(-box\)\=\>" +syn match cssUIAttr contained "\<\%(content\|padding\|border\)\%(-box\)\=\>" syn keyword cssUIProp contained cursor -syn match cssUIAttr contained "\<\(\([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>" +syn match cssUIAttr contained "\<\%(\%([ns]\=[ew]\=\)\|col\|row\|nesw\|nwse\)-resize\>" syn keyword cssUIAttr contained crosshair help move pointer alias copy syn keyword cssUIAttr contained progress wait text cell move syn match cssUIAttr contained "\" syn match cssUIAttr contained "\" syn match cssUIAttr contained "\" syn match cssUIAttr contained "\" -syn match cssUIAttr contained "\<\(vertical-\)\=text\>" -syn match cssUIAttr contained "\" +syn match cssUIAttr contained "\<\%(vertical-\)\=text\>" +syn match cssUIAttr contained "\" syn match cssUIProp contained "\" syn keyword cssUIAttr contained active inactive disabled -syn match cssUIProp contained "\" -syn match cssUIProp contained "\" +syn match cssUIProp contained "\" +syn match cssUIProp contained "\" syn keyword cssUIAttr contained invert syn keyword cssUIProp contained icon resize @@ -401,27 +406,27 @@ syn match cssUIAttr contained '\' syn match cssIEUIAttr contained '\' " Webkit/iOS specific properties -syn match cssUIProp contained '\<\(tap-highlight-color\|user-select\|touch-callout\)\>' +syn match cssUIProp contained '\<\%(tap-highlight-color\|user-select\|touch-callout\)\>' " IE specific properties -syn match cssIEUIProp contained '\<\(interpolation-mode\|zoom\|filter\)\>' +syn match cssIEUIProp contained '\<\%(interpolation-mode\|zoom\|filter\)\>' " Webkit/Firebox specific properties/attributes syn keyword cssUIProp contained appearance syn keyword cssUIAttr contained window button field icon document menu -syn match cssAuralProp contained "\<\(pause\|cue\)\(-\(before\|after\)\)\=\>" -syn match cssAuralProp contained "\<\(play-during\|speech-rate\|voice-family\|pitch\(-range\)\=\|speak\(-\(punctuation\|numeral\|header\)\)\=\)\>" +syn match cssAuralProp contained "\<\%(pause\|cue\)\%(-\%(before\|after\)\)\=\>" +syn match cssAuralProp contained "\<\%(play-during\|speech-rate\|voice-family\|pitch\%(-range\)\=\|speak\%(-\%(punctuation\|numeral\|header\)\)\=\)\>" syn keyword cssAuralProp contained volume during azimuth elevation stress richness -syn match cssAuralAttr contained "\<\(x-\)\=\(soft\|loud\)\>" +syn match cssAuralAttr contained "\<\%(x-\)\=\%(soft\|loud\)\>" syn keyword cssAuralAttr contained silent syn match cssAuralAttr contained "\" syn keyword cssAuralAttr contained non mix -syn match cssAuralAttr contained "\<\(left\|right\)-side\>" -syn match cssAuralAttr contained "\<\(far\|center\)-\(left\|center\|right\)\>" +syn match cssAuralAttr contained "\<\%(left\|right\)-side\>" +syn match cssAuralAttr contained "\<\%(far\|center\)-\%(left\|center\|right\)\>" syn keyword cssAuralAttr contained leftwards rightwards behind syn keyword cssAuralAttr contained below level above lower higher -syn match cssAuralAttr contained "\<\(x-\)\=\(slow\|fast\|low\|high\)\>" +syn match cssAuralAttr contained "\<\%(x-\)\=\%(slow\|fast\|low\|high\)\>" syn keyword cssAuralAttr contained faster slower syn keyword cssAuralAttr contained male female child code digits continuous @@ -431,15 +436,15 @@ syn match cssMobileTextProp contained "\" syn keyword cssMediaProp contained width height orientation scan syn keyword cssMediaProp contained any-hover any-pointer color-gamut grid hover syn keyword cssMediaProp contained overflow-block overflow-inline pointer update -syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(\(device\)-\)\=aspect-ratio\>/ -syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-pixel-ratio\>/ -syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=device-\(height\|width\)\>/ -syn match cssMediaProp contained /\<\(\(max\|min\)-\)\=\(height\|width\|resolution\|monochrome\|color\(-index\)\=\)\>/ +syn match cssMediaProp contained /\<\%(\%(max\|min\)-\)\=\%(\%(device\)-\)\=aspect-ratio\>/ +syn match cssMediaProp contained /\<\%(\%(max\|min\)-\)\=device-pixel-ratio\>/ +syn match cssMediaProp contained /\<\%(\%(max\|min\)-\)\=device-\%(height\|width\)\>/ +syn match cssMediaProp contained /\<\%(\%(max\|min\)-\)\=\%(height\|width\|resolution\|monochrome\|color\%(-index\)\=\)\>/ syn keyword cssMediaAttr contained portrait landscape progressive interlace syn keyword cssMediaAttr contained coarse fast fine hover infinite p3 paged syn keyword cssMediaAttr contained rec2020 scroll slow srgb -syn match cssKeyFrameProp contained /\(\d\+\(\.\d\+\)\?%\|\(\\)\)/ nextgroup=cssDefinition -syn match cssPageMarginProp /@\(\(top\|left\|right\|bottom\)-\(left\|center\|right\|middle\|bottom\)\)\(-corner\)\=/ contained nextgroup=cssDefinition +syn match cssKeyFrameProp contained /\%(\d\+\%(\.\d\+\)\?%\|\%(\\)\)/ nextgroup=cssDefinition +syn match cssPageMarginProp /@\%(\%(top\|left\|right\|bottom\)-\%(left\|center\|right\|middle\|bottom\)\)\%(-corner\)\=/ contained nextgroup=cssDefinition syn keyword cssPageProp contained content size syn keyword cssPageProp contained orphans widows syn keyword cssFontDescriptorProp contained src @@ -459,18 +464,18 @@ syn match cssAttrComma "," syn match cssPseudoClass ":[A-Za-z0-9_-]*" contains=cssNoise,cssPseudoClassId,cssUnicodeEscape,cssVendor,cssPseudoClassFn syn keyword cssPseudoClassId contained link visited active hover before after left right syn keyword cssPseudoClassId contained root empty target enabled disabled checked invalid -syn match cssPseudoClassId contained "\" -syn match cssPseudoClassId contained "\<\(first\|last\|only\)-\(of-type\|child\)\>" -syn match cssPseudoClassId contained "\" -syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\(not\|is\|lang\|\(nth\|nth-last\)-\(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier +syn match cssPseudoClassId contained "\" +syn match cssPseudoClassId contained "\<\%(first\|last\|only\)-\%(of-type\|child\)\>" +syn match cssPseudoClassId contained "\" +syn region cssPseudoClassFn contained matchgroup=cssFunctionName start="\<\%(not\|is\|lang\|\%(nth\|nth-last\)-\%(of-type\|child\)\)(" end=")" contains=cssStringQ,cssStringQQ,cssTagName,cssAttributeSelector,cssClassName,cssIdentifier " ------------------------------------ " Vendor specific properties syn match cssPseudoClassId contained "\" -syn match cssPseudoClassId contained "\<\(input-\)\=placeholder\>" +syn match cssPseudoClassId contained "\<\%(input-\)\=placeholder\>" " Misc highlight groups -syntax match cssUnitDecorators /\(#\|-\|+\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|ch\|rem\|vh\|vw\|vmin\|vmax\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained -syntax match cssNoise contained /\(:\|;\|\/\)/ +syntax match cssUnitDecorators /\%(#\|-\|+\|%\|mm\|cm\|in\|pt\|pc\|em\|ex\|px\|ch\|rem\|vh\|vw\|vmin\|vmax\|dpi\|dppx\|dpcm\|Hz\|kHz\|s\|ms\|deg\|grad\|rad\)/ contained +syntax match cssNoise contained /\%(:\|;\|\/\)/ " Comment syn region cssComment start="/\*" end="\*/" contains=@Spell fold @@ -482,7 +487,7 @@ syn region cssStringQQ start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=cssUnicodeEsc syn region cssStringQ start=+'+ skip=+\\\\\|\\'+ end=+'+ contains=cssUnicodeEscape,cssSpecialCharQ " Vendor Prefix -syn match cssVendor contained "-\(webkit\|moz\|o\|ms\)-" +syn match cssVendor contained "-\%(webkit\|moz\|o\|ms\)-" " Various CSS Hack characters " In earlier versions of IE (6 and 7), one can prefix property names @@ -490,18 +495,18 @@ syn match cssVendor contained "-\(webkit\|moz\|o\|ms\)-" " This is purely decorative and therefore we assign to the same highlight " group to cssVendor, for more information: " http://www.paulirish.com/2009/browser-specific-css-hacks/ -syn match cssHacks contained /\(_\|*\)/ +syn match cssHacks contained /\%(_\|*\)/ " Attr Enhance " Some keywords are both Prop and Attr, so we have to handle them " cssPseudoClassId is hidden by cssAttrRegion, so we add it here. see #69 -syn region cssAttrRegion start=/:/ end=/\ze\(;\|)\|}\|{\)/ contained contains=cssPseudoClassId,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise +syn region cssAttrRegion start=/:/ end=/\ze\%(;\|)\|}\|{\)/ contained contains=cssPseudoClassId,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise " Hack for transition " 'transition' has Props after ':'. -syn region cssAttrRegion start=/transition\s*:/ end=/\ze\(;\|)\|}\)/ contained contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise +syn region cssAttrRegion start=/transition\s*:/ end=/\ze\%(;\|)\|}\)/ contained contains=css.*Prop,css.*Attr,cssColor,cssImportant,cssValue.*,cssFunction,cssString.*,cssURL,cssComment,cssUnicodeEscape,cssVendor,cssError,cssAttrComma,cssNoise -syn match cssAtKeyword /@\(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/ +syn match cssAtKeyword /@\%(font-face\|media\|keyframes\|import\|charset\|namespace\|page\|supports\)/ syn keyword cssAtRuleLogical only not and contained @@ -513,10 +518,10 @@ syn keyword cssMediaType contained screen print aural braille embossed handheld " @page " http://www.w3.org/TR/css3-page/ syn region cssAtRule start=/@page\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssPagePseudo,cssComment nextgroup=cssDefinition -syn match cssPagePseudo /:\(left\|right\|first\|blank\)/ contained skipwhite skipnl +syn match cssPagePseudo /:\%(left\|right\|first\|blank\)/ contained skipwhite skipnl " @keyframe " http://www.w3.org/TR/css3-animations/#keyframes -syn region cssAtRule start=/@\(-[a-z]\+-\)\=keyframes\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssVendor,cssComment nextgroup=cssDefinition +syn region cssAtRule start=/@\%(-[a-z]\+-\)\=keyframes\>/ end=/\ze{/ skipwhite skipnl matchgroup=cssAtKeyword contains=cssVendor,cssComment nextgroup=cssDefinition syn region cssAtRule start=/@import\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword,cssURL,cssMediaProp,cssValueLength,cssAtRuleLogical,cssValueInteger,cssMediaAttr,cssMediaType syn region cssAtRule start=/@charset\>/ end=/\ze;/ contains=cssStringQ,cssStringQQ,cssUnicodeEscape,cssComment,cssAtKeyword diff --git a/runtime/syntax/debcontrol.vim b/runtime/syntax/debcontrol.vim index e98a6d3f..7b4d1406 100644 --- a/runtime/syntax/debcontrol.vim +++ b/runtime/syntax/debcontrol.vim @@ -3,7 +3,7 @@ " Maintainer: Debian Vim Maintainers " Former Maintainers: Gerfried Fuchs " Wichert Akkerman -" Last Change: 2025 Jul 05 +" Last Change: 2026 Jan 20 " URL: https://salsa.debian.org/vim-team/vim-debian/blob/main/syntax/debcontrol.vim " Standard syntax initialization @@ -34,7 +34,7 @@ exe 'syn keyword debcontrolArchitecture contained '. join(g:debArchitectureKerne exe 'syn keyword debcontrolArchitecture contained '. join(g:debArchitectureAnyKernelArch) exe 'syn keyword debcontrolArchitecture contained '. join(g:debArchitectureArchs) -" Keep in sync with https://metadata.ftp-master.org/sections.822 +" Keep in sync with https://metadata.ftp-master.debian.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' @@ -74,14 +74,32 @@ syn match debcontrolEmail "<.\{-}>" " #-Comments syn match debcontrolComment "^#.*$" contains=@Spell +" Build profiles +" Since there's no official spec for the field, use dpkg's parsing +" (from BuildProfiles.pm) as the de facto spec +syn match debcontrolBuildProfile "<\@" contained + +" Architecture specification for a package relationship +let s:all_archs = join(g:debArchitectureKernelAnyArch, '\|') + \. '\|' + \. join(g:debArchitectureAnyKernelArch, '\|') + \. '\|' + \. join(g:debArchitectureArchs, '\|') +exe 'syn match debcontrolArchSpec "\[\s*!\=\%('. s:all_archs .'\)\%(\s\+!\=\%('. s:all_archs. '\)\)*\s*\]" contained' +unlet s:all_archs + syn case ignore " Handle all fields from deb-src-control(5) " Catch-all for the legal fields -syn region debcontrolField matchgroup=debcontrolKey start="^\%(\%(XSBC-Original-\)\=Maintainer\|Standards-Version\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\%(-Triggers\)\=\|Build-Profiles\|Tag\|Subarchitecture\|Kernel-Version\|Installer-Menu-Item\): " end="$" contains=debcontrolVariable,debcontrolEmail oneline -syn region debcontrolMultiField matchgroup=debcontrolKey start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\|Static-Built-Using\|Uploaders\|X[SBC]\{0,3\}\%(Private-\)\=-[-a-zA-Z0-9]\+\): *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment -syn region debcontrolMultiFieldSpell matchgroup=debcontrolKey start="^Description: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment,@Spell +syn region debcontrolField matchgroup=debcontrolKey start="^\%(XSBC-Original-\)\=Maintainer: " end="$" contains=debcontrolVariable,debcontrolEmail oneline +syn region debcontrolField matchgroup=debcontrolKey start="^Build-Profiles: " end="$" contains=debcontrolVariable,debcontrolBuildProfile oneline +syn region debcontrolField matchgroup=debcontrolKey start="^\%(Standards-Version\|Bugs\|Origin\|X[SB]-Python-Version\|\%(XS-\)\=Vcs-Mtn\|\%(XS-\)\=Testsuite\%(-Triggers\)\=\|Build-Driver\|Tag\|Subarchitecture\|Kernel-Version\|Installer-Menu-Item\): " end="$" contains=debcontrolVariable oneline +syn region debcontrolMultiField matchgroup=debcontrolKey start="^\%(Build-\%(Conflicts\|Depends\)\%(-Arch\|-Indep\)\=\|\%(Pre-\)\=Depends\|Recommends\|Suggests\|Breaks\|Enhances\|Replaces\|Conflicts\|Provides\|Built-Using\|Static-Built-Using\): *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolVariable,debcontrolComment,debcontrolBuildProfile,debcontrolArchSpec +syn region debcontrolMultiField matchgroup=debcontrolKey start="^X[SBC]\{0,3\}\%(Private-\)\=-[-a-zA-Z0-9]\+: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolVariable,debcontrolComment +syn region debcontrolMultiField matchgroup=debcontrolKey start="^Uploaders: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolEmail,debcontrolVariable,debcontrolComment +syn region debcontrolMultiFieldSpell matchgroup=debcontrolKey start="^Description: *" skip="^[ \t]" end="^$"me=s-1 end="^[^ \t#]"me=s-1 contains=debcontrolVariable,debcontrolComment,@Spell " Fields for which we do strict syntax checking syn region debcontrolStrictField matchgroup=debcontrolKey start="^Architecture: *" end="$" contains=debcontrolArchitecture,debcontrolSpace oneline @@ -96,7 +114,7 @@ syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-[-a-zA-Z syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-[-a-zA-Z0-9]\+-\)\=Vcs-Cvs: *" end="$" contains=debcontrolVcsCvs oneline keepend syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(XS-[-a-zA-Z0-9]\+-\)\=Vcs-Git: *" end="$" contains=debcontrolVcsGit oneline keepend syn region debcontrolStrictField matchgroup=debcontrolKey start="^Rules-Requires-Root: *" end="$" contains=debcontrolR3 oneline -syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(Build-\)\=Essential: *" end="$" contains=debcontrolYesNo oneline +syn region debcontrolStrictField matchgroup=debcontrolKey start="^\%(\%(Build-\)\=Essential\|Protected\): *" end="$" contains=debcontrolYesNo oneline syn region debcontrolStrictField matchgroup=debcontrolDeprecatedKey start="^\%(XS-\)\=DM-Upload-Allowed: *" end="$" contains=debcontrolDmUpload oneline @@ -113,6 +131,8 @@ hi def link debcontrolPriority Normal hi def link debcontrolSection Normal hi def link debcontrolPackageType Normal hi def link debcontrolVariable Identifier +hi def link debcontrolArchSpec Identifier +hi def link debcontrolBuildProfile Identifier hi def link debcontrolEmail Identifier hi def link debcontrolVcsSvn Identifier hi def link debcontrolVcsCvs Identifier diff --git a/runtime/syntax/django.vim b/runtime/syntax/django.vim index 76b47d2e..353221af 100644 --- a/runtime/syntax/django.vim +++ b/runtime/syntax/django.vim @@ -2,6 +2,7 @@ " Language: Django template " Maintainer: Dave Hodder " Last Change: 2021 Nov 29 +" 2026 Feb 12 by Vim Project add partial support #19386 " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -32,6 +33,7 @@ syn keyword djangoStatement contained get_current_language trans noop blocktrans syn keyword djangoStatement contained endblocktrans get_available_languages syn keyword djangoStatement contained get_current_language_bidi plural syn keyword djangoStatement contained translate blocktranslate endblocktranslate +syn keyword djangoStatement contained partialdef endpartialdef partial " Django templete built-in filters syn keyword djangoFilter contained add addslashes capfirst center cut date diff --git a/runtime/syntax/env.vim b/runtime/syntax/env.vim new file mode 100644 index 00000000..a33eb045 --- /dev/null +++ b/runtime/syntax/env.vim @@ -0,0 +1,28 @@ +" Vim syntax file +" Language: env +" Maintainer: DuckAfire +" Last Change: 2026 Jan 27 +" Version: 2 +" Changelog: +" 0. Create syntax file. +" 1. Remove unused variable (g:main_syntax). +" 2. Apply changes required by github@dkearns + +if exists("b:current_syntax") + finish +endif + +syn match envField nextgroup=envValue /^\h\%(\w\|\.\)*/ +syn region envValue matchgroup=Operator start=/=/ end=/$/ +syn match envComment contains=envTodo,envTitles /^#.*$/ +syn keyword envTodo contained CAUTION NOTE TODO WARN WARNING +syn match envTitle contained /^\s*#\s*\zs[A-Z0-9][A-Z0-9 ]*:/ + +hi def link envField Identifier +hi def link envValue String +hi def link envComment Comment +hi def link envTodo Todo +hi def link envTitle PreProc + +let b:current_syntax = "env" + diff --git a/runtime/syntax/erlang.vim b/runtime/syntax/erlang.vim index 3ef2c8d4..bbb03d52 100644 --- a/runtime/syntax/erlang.vim +++ b/runtime/syntax/erlang.vim @@ -3,7 +3,7 @@ " Maintainer: Csaba Hoch " Contributor: Adam Rutkowski " Johannes Christ -" Last Update: 2025-Jul-06 +" Last Update: 2025-Nov-12 " License: Vim license " URL: https://github.com/vim-erlang/vim-erlang-runtime @@ -217,7 +217,7 @@ syn match erlangInnerDocAttribute '^\s*-\%(\s\|\n\|%.*\n\)*\%(moduledoc\|doc\)\> 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 -syn match erlangPreCondit '^\s*-\%(\s\|\n\|%.*\n\)*\%(ifdef\|ifndef\|else\|endif\)\>' contains=erlangComment +syn match erlangPreCondit '^\s*-\%(\s\|\n\|%.*\n\)*\%(ifdef\|ifndef\|else\|if\|elif\|endif\)\>' contains=erlangComment syn match erlangType '^\s*-\%(\s\|\n\|%.*\n\)*\%(spec\|type\|opaque\|nominal\|callback\)\>' contains=erlangComment " Keywords diff --git a/runtime/syntax/eruby.vim b/runtime/syntax/eruby.vim index 3d1bf715..46940875 100644 --- a/runtime/syntax/eruby.vim +++ b/runtime/syntax/eruby.vim @@ -2,7 +2,6 @@ " Language: eRuby " Maintainer: Tim Pope " URL: https://github.com/vim-ruby/vim-ruby -" Release Coordinator: Doug Kearns " Last Change: 2022 Mar 18 if exists("b:current_syntax") diff --git a/runtime/syntax/fstab.vim b/runtime/syntax/fstab.vim index 442bc94f..a7ec978b 100644 --- a/runtime/syntax/fstab.vim +++ b/runtime/syntax/fstab.vim @@ -2,8 +2,8 @@ " Language: fstab file " Maintainer: Radu Dineiu " URL: https://raw.github.com/rid9/vim-fstab/master/syntax/fstab.vim -" Last Change: 2025 Aug 21 -" Version: 1.7.0 +" Last Change: 2026 Feb 14 +" Version: 1.7.1 " " Credits: " David Necas (Yeti) @@ -21,6 +21,7 @@ " " Changelog: " - 2025 Aug 21 added support for mtab +" - 2026 Feb 14 added cgroup2 to device types " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -38,7 +39,7 @@ syn match fsOperator /[,=:#]/ " Device syn cluster fsDeviceCluster contains=fsOperator,fsDeviceKeyword,fsDeviceError syn match fsDeviceError /\%([^a-zA-Z0-9_\/#@:\.-]\|^\w\{-}\ze\W\)/ contained -syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs tracefs overlay +syn keyword fsDeviceKeyword contained none proc linproc tmpfs devpts devtmpfs sysfs usbfs tracefs overlay cgroup2 syn keyword fsDeviceKeyword contained LABEL nextgroup=fsDeviceLabel syn keyword fsDeviceKeyword contained UUID nextgroup=fsDeviceUUID syn keyword fsDeviceKeyword contained PARTLABEL nextgroup=fsDevicePARTLABEL diff --git a/runtime/syntax/fvwm.vim b/runtime/syntax/fvwm.vim index 2f96bab5..cb974a2d 100644 --- a/runtime/syntax/fvwm.vim +++ b/runtime/syntax/fvwm.vim @@ -3,6 +3,7 @@ " Maintainer: Gautam Iyer " Previous Maintainer: Haakon Riiser " Last Change: Sat 29 Sep 2007 11:08:34 AM PDT +" 2025 Dec 14: Update fvwm2 keywords #18924 " " Thanks to David Necas (Yeti) for adding Fvwm 2.4 support. " @@ -157,7 +158,7 @@ else \ PrintInfo Repeat Schedule State WindowFont \ XSync XSynchronize AnimatedMove \ HideGeometryWindow Layer Lower Move - \ MoveToDesk MoveThreshold MoveToPage + \ MoveToDesk MoveThreshold MoveToPage Resize \ MoveToScreen OpaqueMoveSize PlaceAgain Raise \ RaiseLower ResizeMaximize ResizeMove \ ResizeMoveMaximize RestackTransients @@ -166,7 +167,7 @@ else \ FlipFocus Focus WarpToWindow Close Delete \ Destroy Iconify Recapture RecaptureWindow \ Refresh RefreshWindow Stick StickAcrossPages - \ StickAcrossDesks WindowShade + \ StickAcrossDesks WindowShade Maximize GotoDesk \ WindowShadeAnimate IgnoreModifiers \ EdgeCommand EdgeLeaveCommand GnomeButton \ Stroke StrokeFunc FocusStyle DestroyStyle @@ -186,6 +187,7 @@ else \ QuitSession Restart SaveSession \ SaveQuitSession KeepRc NoWindow Break \ CleanupColorsets EchoFuncDefinition + \ InfoStoreAdd DesktopConfiguration " Conditional commands syn keyword fvwmKeyword nextgroup=fvwmCondition skipwhite @@ -276,7 +278,7 @@ else \ BackColor Colorset HilightFore HilightBack \ HilightColorset BorderColorset \ HilightBorderColorset IconTitleColorset - \ HilightIconTitleColorset + \ HilightIconTitleColorset IconTitleFormat \ IconBackgroundColorset IconTitleRelief \ IconBackgroundRelief IconBackgroundPadding \ Font IconFont StartsOnDesk StartsOnPage @@ -382,6 +384,7 @@ else \ MinOverlapPlacementPenalties \ MinOverlapPercentPlacementPenalties \ MinWindowSize StartShaded + \ EdgeMoveDelay EdgeMoveResistance " Cursor styles syn keyword fvwmKeyword nextgroup=fvwmCursorStyle skipwhite @@ -441,7 +444,8 @@ else syn keyword fvwmBStyleNames contained \ Simple Default Solid Colorset Vector Pixmap \ AdjustedPixmap ShrunkPixmap StretchedPixmap - \ TiledPixmap MiniIcon + \ TiledPixmap MiniIcon MwmDecorMenu MwmDecorMin + \ MwmDecorMax MwmDecorShade MwmDecorStick MwmDecorLayer syn keyword fvwmBStyleFlags contained \ Raised Sunk Flat UseTitleStyle \ UseBorderStyle diff --git a/runtime/syntax/gdb.vim b/runtime/syntax/gdb.vim index c15b96de..0955f0f1 100644 --- a/runtime/syntax/gdb.vim +++ b/runtime/syntax/gdb.vim @@ -1,9 +1,11 @@ " Vim syntax file -" Language: GDB command files -" Maintainer: Claudio Fleiner -" URL: http://www.fleiner.com/vim/syntax/gdb.vim -" Last Change: 2021 Nov 15 -" Additional changes by Simon Sobisch +" Language: GDB command files +" Maintainer: Doug Kearns +" Previous Maintainer: Claudio Fleiner +" Last Change: 2026 Feb 08 +" Contributors: Simon Sobisch + +" WARNING: the group names are NOT stable and may change at any time " quit when a syntax file was already loaded if exists("b:current_syntax") @@ -13,92 +15,1631 @@ endif let s:cpo_save = &cpo set cpo&vim -syn keyword gdbInfo contained address architecture args breakpoints catch common copying dcache -syn keyword gdbInfo contained display files float frame functions handle line -syn keyword gdbInfo contained locals program registers scope set sharedlibrary signals -syn keyword gdbInfo contained source sources stack symbol target terminal threads -syn keyword gdbInfo contained syn keyword tracepoints types udot variables warranty watchpoints -syn match gdbInfo contained "all-registers" - - -syn keyword gdbStatement contained actions apply attach awatch backtrace break bt call catch cd clear collect commands -syn keyword gdbStatement contained complete condition continue delete detach directory disable disas[semble] disp[lay] down -syn keyword gdbStatement contained echo else enable end file finish frame handle hbreak help if ignore -syn keyword gdbStatement contained inspect jump kill list load maintenance make next nexti ni output overlay -syn keyword gdbStatement contained passcount path print printf ptype python pwd quit rbreak remote return run rwatch -syn keyword gdbStatement contained search section set sharedlibrary shell show si signal skip source step stepi stepping -syn keyword gdbStatement contained stop target tbreak tdump tfind thbreak thread tp trace tstart tstatus tstop -syn keyword gdbStatement contained tty und[isplay] unset until up watch whatis where while ws x -syn match gdbFuncDef "\.*" -syn match gdbStatementContainer "^\s*\S\+" contains=gdbStatement,gdbFuncDef -syn match gdbStatement "^\s*info" nextgroup=gdbInfo skipwhite skipempty - -" some commonly used abbreviations -syn keyword gdbStatement c cont p py - -syn region gdbDocument matchgroup=gdbFuncDef start="\.*$" matchgroup=gdbFuncDef end="^end\s*$" - -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" -syn match gdbStatement "\" - -syn keyword gdbSet annotate architecture args check complaints confirm editing endian -syn keyword gdbSet environment gnutarget height history language listsize print prompt -syn keyword gdbSet radix remotebaud remotebreak remotecache remotedebug remotedevice remotelogbase -syn keyword gdbSet remotelogfile remotetimeout remotewritesize targetdebug variable verbose -syn keyword gdbSet watchdog width write -syn match gdbSet "\" -syn match gdbSet "\" -syn match gdbSet "\" -syn match gdbSet "\" -syn match gdbSet "\" -syn match gdbSet "\" -syn match gdbSet "\" -syn match gdbSet "\" - -syn match gdbComment "^\s*#.*" contains=@Spell - -syn match gdbVariable "\$\K\k*" - -" Strings and constants -syn region gdbString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=@Spell +syn iskeyword @,48-57,_,128-167,224-235,- + +" Include {{{1 +" TODO: other languages: ada asm auto c d fortran go local minimal opencl pascal rust unknown +syn include @gdbC syntax/c.vim +unlet b:current_syntax + +syn region gdbExpression contained start="\S" skip="\\$" end="$" contains=@gdbC,gdbLineContinuation transparent + +" Commands {{{1 + +" breakpoints {{{2 +syn keyword gdbCommand contained aw[atch] nextgroup=@gdbWatchOption,gdbExpression skipwhite +syn keyword gdbCommand contained b[reak] +syn keyword gdbCommand contained break-[range] +syn keyword gdbCommand contained cat[ch] nextgroup=gdbCatchArgs skipwhite + syn keyword gdbCatchArgs contained assert catch exception exec fork handlers load rethrow signal syscall throw unload vfork +syn keyword gdbCommand contained cl[ear] cl + +syn match gdbCommand contained "\" nextgroup=gdbBreakpointNumber,gdbBreakpointRange skipwhite + " TODO: move this and generalise to idlist or similar? Where else are id + " numbers and ranges used? Breakpoints include catchpoints and watchpoints. + syn match gdbBreakpointNumber contained "\<\d\+\>" nextgroup=gdbBreakpointNumber,gdbBreakpointRange skipwhite + syn match gdbBreakpointRange contained "\<\d\+-\d\+\>" nextgroup=gdbBreakpointNumber,gdbBreakpointRange skipwhite + syn cluster gdbBreakpointNumbers contains=gdbBreakpointNumber,gdbBreakpointRange + syn match gdbBreakpointCount contained "-\@1" nextgroup=@gdbBreakpointNumbers skipwhite + " TODO: better name + syn keyword gdbCommandsKeyword silent contained + hi def link gdbCommandsKeyword gdbCommand +syn region gdbMultilineCommand contained start="\" matchgroup=gdbCommand end="^\s*\zsend\ze\s*$" contains=gdbCommand,gdbComment,gdbCommandsKeyword transparent fold + +syn keyword gdbCommand contained cond[ition] nextgroup=@gdbConditionOption,gdbConditionBreakpointNumber skipwhite + syn match gdbConditionEndOption contained "--" nextgroup=gdbExpression skipwhite + syn match gdbConditionOption contained "-f\%[orce]\>" nextgroup=gdbConditionEndOption,gdbExpression skipwhite + syn cluster gdbConditionOption contains=gdbConditionOption,gdbConditionEndOption + syn match gdbConditionBreakpointNumber contained "\<\d\+\>" contains=gdbBreakpointNumber nextgroup=gdbExpression skipwhite + +syn keyword gdbCommand contained del[ete] del d nextgroup=@gdbBreakpointNumbers,gdbDeleteArgs skipwhite + syn keyword gdbDeleteArgs contained breakpoints nextgroup=@gdbBreakpointNumbers skipwhite + syn keyword gdbDeleteArgs contained tracepoints tr nextgroup=@gdbBreakpointNumbers skipwhite + syn keyword gdbDeleteArgs contained bookmark checkpoint display mem tvariable +syn keyword gdbCommand contained dis[able] disa dis nextgroup=@gdbBreakpointNumbers,gdbDisableArgs skipwhite + syn keyword gdbDisableArgs contained breakpoints nextgroup=@gdbBreakpointNumbers skipwhite + syn keyword gdbDisableArgs contained display frame-filter mem pretty-printer probes type-printer unwinder xmethod +syn keyword gdbCommand contained dp[rintf] +syn keyword gdbCommand contained e[nable] en nextgroup=gdbEnableArgs skipwhite + syn keyword gdbEnableArgs contained display frame-filter mem pretty-printer probes type-printer unwinder xmethod + syn keyword gdbEnableArgs contained delete once nextgroup=@gdbBreakpointNumbers skipwhite + syn keyword gdbEnableArgs contained count nextgroup=gdbBreakpointCount skipwhite + syn keyword gdbEnableArgs contained breakpoints nextgroup=gdbEnableBreakpointArgs,@gdbBreakpointNumbers skipwhite + syn keyword gdbEnableBreakpointArgs contained count nextgroup=gdbBreakpointCount skipwhite + syn keyword gdbEnableBreakpointArgs contained delete once nextgroup=@gdbBreakpointNumbers skipwhite +syn keyword gdbCommand contained ft[race] +syn keyword gdbCommand contained hb[reak] +syn keyword gdbCommand contained ig[nore] +syn keyword gdbCommand contained rb[reak] +syn keyword gdbCommand contained rw[atch] nextgroup=@gdbWatchOption,gdbExpression skipwhite +syn keyword gdbCommand contained save nextgroup=gdbSaveArgs skipwhite + syn keyword gdbSaveArgs contained breakpoints gdb-index tracepoints +syn keyword gdbCommand contained sk[ip] nextgroup=gdbSkipArgs skipwhite + syn keyword gdbSkipArgs contained delete disable enable file function +syn keyword gdbCommand contained str[ace] +syn keyword gdbCommand contained tb[reak] +syn keyword gdbCommand contained tc[atch] +syn keyword gdbCommand contained tc[atch] nextgroup=gdbCatchArgs skipwhite +syn keyword gdbCommand contained thb[reak] +syn keyword gdbCommand contained tr[ace] tp +syn keyword gdbCommand contained wa[tch] nextgroup=@gdbWatchOption,gdbExpression skipwhite + syn match gdbWatchEndOption contained "--" nextgroup=gdbExpression skipwhite + syn match gdbWatchOption contained "-l\%[ocation]\>" nextgroup=gdbWatchEndOption,gdbExpression skipwhite + syn cluster gdbWatchOption contains=gdbWatchOption,gdbWatchEndOption + +" data {{{2 +syn keyword gdbCommand contained ag[ent-printf] nextgroup=gdbString +syn keyword gdbCommand contained app[end] nextgroup=gdbAppendArgs skipwhite + syn keyword gdbAppendArgs contained b[inary] nextgroup=gdbAppendBinaryArgs skipwhite + syn keyword gdbAppendBinaryArgs contained m[emory] v[alue] nextgroup=gdbAppendBinaryArgs skipwhite + syn keyword gdbAppendArgs contained m[emory] v[alue] +syn keyword gdbCommand contained ca[ll] +syn keyword gdbCommand contained disas[semble] +syn keyword gdbCommand contained disp[lay] nextgroup=gdbFormat skipwhite +syn keyword gdbCommand contained du[mp] nextgroup=gdbDumpArgs skipwhite + " TODO: share subcommand group + syn keyword gdbDumpArgs contained b[inary] i[hex] s[rec] t[ekhex] va[lue] ve[rilog] nextgroup=gdbDumpBinaryArgs skipwhite + syn keyword gdbDumpArgs contained m[emory] + syn keyword gdbDumpBinaryArgs contained m[emory] v[alue] +syn keyword gdbCommand contained explore nextgroup=gdbExploreArgs skipwhite + syn keyword gdbExploreArgs contained t[ype] v[alue] +syn keyword gdbCommand contained find +syn keyword gdbCommand contained in[it-if-undefined] +syn keyword gdbCommand contained mem +syn keyword gdbCommand contained memo[ry-tag] nextgroup=gdbMemoryTagArgs skipwhite + syn keyword gdbMemoryTagArgs contained c[heck] + syn keyword gdbMemoryTagArgs contained print-a[llocation-tag] + syn keyword gdbMemoryTagArgs contained print-l[ogical-tag] + syn keyword gdbMemoryTagArgs contained s[et-allocation-tag] + syn keyword gdbMemoryTagArgs contained w[ith-logical-tag] +syn keyword gdbCommand contained ou[tput] +syn keyword gdbCommand contained pr[int] ins[pect] p nextgroup=gdbPrintFormat skipwhite + syn match gdbPrintFormat contained "/1\=[oxdutfaicsz]\=" +syn keyword gdbCommand contained print-[object] po +syn keyword gdbCommand contained printf +syn keyword gdbCommand contained pt[ype] +syn keyword gdbCommand contained resto[re] + +" Set command {{{3 +syn keyword gdbCommand contained set nextgroup=gdbSetArgs skipwhite + + " Value types {{{4 + + " Boolean + syn keyword gdbSetBooleanValue contained on of[f] + + " Auto-boolean + syn keyword gdbSetAutoBooleanValue contained on of[f] a[uto] + + " Integer + syn keyword gdbSetIntegerValue contained unlimited + syn match gdbSetIntegerValue contained "[+-]\=\d\+\>" + + " UInteger + syn keyword gdbSetUIntegerValue contained unlimited + syn match gdbSetUIntegerValue contained "\<\d\+\>" + + " ZInteger + syn match gdbSetZIntegerValue contained "[+-]\=\d\+\>" + + " ZUInteger + syn match gdbSetZUIntegerValue contained "\<\d\+\>" + + " ZUIntegerUnlimited + syn keyword gdbSetZUIntegerUnlimitedValue contained unlimited + syn match gdbSetZUIntegerUnlimitedValue contained "-1\>" + syn match gdbSetZUIntegerUnlimitedValue contained "\<\d\+\>" + + " Enum + syn cluster gdbSetAskBooleanValue contains=gdbSetBooleanValue,gdbSetAskValue + syn keyword gdbSetAskValue contained a[sk] + + " String + syn region gdbSetStringValue contained start="\S" skip="\\$" end="\s*$" contains=gdbStringEscape + " StringNoEscape + syn region gdbSetStringNoEscapeValue contained start="\S" skip="\\$" end="\s*$" + + " OptionalFilename + syn match gdbSetOptionalFilenameValue contained "\S\+\%(\s*\S\+\)*" + " Filename + syn match gdbSetFilenameValue contained "\S\+\%(\s*\S\+\)*" + " TODO: better pattern? + " syn match gdbSetFilenameValue contained "\S.\{-}\ze\%(\s*$\)" + " syn region gdbSetFilenameValue contained start="\S" skip="\\$" end=\s*$" + + " Subcommands {{{4 + + syn keyword gdbSetArgs contained ag[ent] con[firm] ed[iting] ob[server] pa[gination] remotec[ache] remotef[low] ve[rbose] wr[ite] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained hei[ght] wi[dth] nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetArgs contained an[notate] compl[aints] wa[tchdog] nextgroup=gdbSetZIntegerValue skipwhite + syn keyword gdbSetArgs contained remotet[imeout] remotea[ddresssize] nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetArgs contained cha[rset] " [charset] + syn keyword gdbSetArgs contained end[ian] nextgroup=gdbSetEndianValue skipwhite + syn keyword gdbSetEndianValue contained auto big little + syn keyword gdbSetArgs contained dir[ectories] nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained la[nguage] nextgroup=gdbSetLanguageValue skipwhite + syn keyword gdbSetLanguageValue contained ada asm auto c d fortran go local minimal modula-2 objective-c opencl pascal rust + syn keyword gdbSetLanguageValue contained unknown + syn match gdbSetLanguageValue contained "\" + syn keyword gdbSetArgs contained arg[s] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained cw[d] nextgroup=gdbSetOptionalFilenameValue skipwhite + " TODO: worth including an architecture value? + syn keyword gdbSetArgs contained arc[hitecture] proc[essor] nextgroup=gdbArchitecture skipwhite + syn keyword gdbSetArgs contained env[ironment] " VAR VALUE + syn keyword gdbSetArgs contained lis[tsize] nextgroup=gdbSetIntegerValue skipwhite + " TODO: auto as constant? + syn keyword gdbSetArgs contained gn[utarget] g nextgroup=gdbSetStringNoEscapeValue skipwhite + syn keyword gdbSetArgs contained rad[ix] + syn keyword gdbSetArgs contained os[abi] nextgroup=gdbSetOsabiValue skipwhite + syn keyword gdbSetOsabiValue contained auto default none + syn keyword gdbSetArgs contained pro[mpt] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained remotelogb[ase] nextgroup=gdbSetRemotelogbaseValue skipwhite + syn keyword gdbSetRemotelogbaseValue contained hex octal ascii + syn keyword gdbSetArgs contained remotelogf[ile] nextgroup=gdbSetFilenameValue skipwhite + " TODO: deprecated + syn keyword gdbSetArgs contained remotew[ritesize] + syn keyword gdbSetArgs contained vari[able] var " VAR = EXP + + syn keyword gdbSetArgs contained ad[a] nextgroup=gdbSetAdaArgs skipwhite + syn keyword gdbSetAdaArgs contained p[rint-signatures] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetAdaArgs contained s[ource-charset] nextgroup=gdbSetAdaSourceCharsetValue skipwhite + syn keyword gdbSetAdaSourceCharsetValue contained CP437 CP850 + syn match gdbSetAdaSourceCharsetValue contained "\" + syn keyword gdbSetAdaSourceCharsetValue contained UTF-8 + syn keyword gdbSetAdaArgs contained t[rust-PAD-over-XVS] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained arm nextgroup=gdbSetArmArgs skipwhite + syn keyword gdbSetArmArgs contained apcs32 nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArmArgs contained abi nextgroup=gdbSetArmAbiValue skipwhite + syn keyword gdbSetArmAbiValue contained AAPCS APCS auto + syn keyword gdbSetArmArgs contained disassembler nextgroup=gdbSetArmDisassemblerValue skipwhite + syn keyword gdbSetArmDisassemblerValue contained apcs atpcs gcc raw special-atpcs std + syn keyword gdbSetArmArgs contained fpu nextgroup=gdbSetArmFpuValue skipwhite + syn keyword gdbSetArmFpuValue contained auto fpa softfpa softvfp vfp + syn keyword gdbSetArmArgs contained fallback-mode nextgroup=gdbSetArmFallbackModeValue skipwhite + syn keyword gdbSetArmFallbackModeValue contained arm auto thumb + syn keyword gdbSetArmArgs contained force-mode nextgroup=gdbSetArmForceModeValue skipwhite + syn keyword gdbSetArmForceModeValue contained arm auto thumb + syn keyword gdbSetArgs contained bac[ktrace] nextgroup=gdbSetBacktraceArgs skipwhite + syn keyword gdbSetBacktraceArgs contained l[imit] nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetBacktraceArgs contained past-e[ntry] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetBacktraceArgs contained past-m[ain] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained br[eakpoint] nextgroup=gdbSetBreakpointArgs skipwhite + syn keyword gdbSetBreakpointArgs contained p[ending] nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetBreakpointArgs contained al[ways-inserted] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetBreakpointArgs contained au[to-hw] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetBreakpointArgs contained c[ondition-evaluation] nextgroup=gdbSetBreakpointCondtionEvaluationValue skipwhite + syn keyword gdbSetBreakpointCondtionEvaluationValue contained auto host target + syn keyword gdbSetArgs contained c[heck] ch c nextgroup=gdbSetCheckArgs skipwhite + syn keyword gdbSetCheckArgs contained range nextgroup=gdbSetCheckRangeValue skipwhite + syn keyword gdbSetCheckArgs contained type nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetCheckRangeValue contained on off warn auto + + syn keyword gdbSetArgs contained dc[ache] nextgroup=gdbSetDcacheArgs skipwhite + syn keyword gdbSetDcacheArgs contained size nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDcacheArgs contained line-size nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetArgs contained debugi[nfod] nextgroup=gdbSetDebuginfodArgs skipwhite + syn keyword gdbSetDebuginfodArgs contained enabled nextgroup=@gdbSetAskBooleanValue skipwhite + syn keyword gdbSetDebuginfodArgs contained urls nextgroup=gdbSetStringNoEscapeValue skipwhite + syn keyword gdbSetDebuginfodArgs contained verbose nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetArgs contained for[tran] nextgroup=gdbSetFortranArgs skipwhite + syn keyword gdbSetFortranArgs contained repack-array-slices nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained gu[ile] gu nextgroup=gdbSetGuileArgs skipwhite + syn keyword gdbSetGuileArgs contained print-stack nextgroup=gdbSetGuilePrintStackValue skipwhite + syn keyword gdbSetGuilePrintStackValue contained none full message + syn keyword gdbSetArgs contained hi[story] nextgroup=gdbSetHistoryArgs skipwhite + syn keyword gdbSetHistoryArgs contained expansion save nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetHistoryArgs contained filename nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetHistoryArgs contained size nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetHistoryArgs contained remove-duplicates nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetArgs contained lo[gging] nextgroup=gdbSetLoggingArgs skipwhite + syn keyword gdbSetLoggingArgs contained debugredirect enabled overwrite redirect nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetLoggingArgs contained file nextgroup=gdbSetFilenameValue skipwhite + syn keyword gdbSetArgs contained me[m] nextgroup=gdbSetMemArgs skipwhite + syn keyword gdbSetMemArgs contained inaccessible-by-default + syn keyword gdbSetArgs contained mips nextgroup=gdbSetMipsArgs skipwhite + syn keyword gdbSetMipsArgs contained abi nextgroup=gdbSetMipsAbiValue skipwhite + syn keyword gdbSetMipsAbiValue contained auto eabi32 eabi64 n32 n64 o32 o64 + syn keyword gdbSetMipsArgs contained compression nextgroup=gdbSetMipsCompressionValue skipwhite + syn keyword gdbSetMipsCompressionValue contained micromips mips16 + syn keyword gdbSetMipsArgs contained mask-address nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetArgs contained mipsf[pu] nextgroup=gdbSetMipsfpuValue skipwhite + syn keyword gdbSetMipsfpuValue contained auto double none single 1 0 yes no on off + syn keyword gdbSetArgs contained mp[x] nextgroup=gdbSetMpxArgs skipwhite + syn keyword gdbSetMpxArgs contained bound + syn keyword gdbSetArgs contained po[werpc] nextgroup=gdbSetPowerpcArgs skipwhite + syn keyword gdbSetPowerpcArgs contained exact-watchpoints nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPowerpcArgs contained soft-float nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetPowerpcArgs contained vector-abi nextgroup=gdbSetPowerpcVectorAbiValue skipwhite + syn keyword gdbSetPowerpcVectorAbiValue contained altivec auto generic spe + syn keyword gdbSetArgs contained pri[nt] pr p nextgroup=gdbSetPrintArgs skipwhite + syn keyword gdbSetPrintArgs contained address demangle finish object pretty union vtbl nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained elements repeats nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetPrintArgs contained type nextgroup=gdbSetPrintTypeArgs skipwhite + syn keyword gdbSetPrintTypeArgs contained hex methods typedefs nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintTypeArgs contained nested-type-limit nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetPrintArgs contained array nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained array-indexes nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained asm-demangle nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained entry-values nextgroup=gdbSetPrintEntryValuesValue skipwhite + syn keyword gdbSetPrintEntryValuesValue contained both compact default if-needed no only preferred + syn keyword gdbSetPrintArgs contained frame-arguments nextgroup=gdbSetPrintFrameArgumentsValue skipwhite + syn keyword gdbSetPrintFrameArgumentsValue contained all none presence scalars + syn keyword gdbSetPrintArgs contained frame-info nextgroup=gdbSetPrintFrameInfoValue skipwhite + syn keyword gdbSetPrintFrameInfoValue contained auto location location-and-address short-location source-and-location source-line + syn keyword gdbSetPrintArgs contained inferior-events nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained max-depth nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetPrintArgs contained max-symbolic-offset nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetPrintArgs contained memory-tag-violations nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained null-stop nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained pascal_static-members nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained raw-frame-arguments nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained raw-values nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained sevenbit-strings nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained static-members nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained symbol nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained symbol-filename nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetPrintArgs contained symbol-loading nextgroup=gdbSetSymbolLoadingValue skipwhite + syn keyword gdbSetSymbolLoadingValue contained brief full off + syn keyword gdbSetPrintArgs contained thread-events nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained py[thon] nextgroup=gdbSetPythonArgs skipwhite + syn keyword gdbSetPythonArgs contained dont-write-bytecode nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetPythonArgs contained ignore-environment + syn keyword gdbSetPythonArgs contained print-stack nextgroup=gdbSetPythonPrintStackValue skipwhite + syn keyword gdbSetPythonPrintStackValue contained none full message + syn keyword gdbSetArgs contained rav[enscar] nextgroup=gdbSetRavenscarArgs skipwhite + syn keyword gdbSetRavenscarArgs contained task-switching + syn keyword gdbSetArgs contained rec[ord] rec nextgroup=gdbSetRecordArgs skipwhite + syn keyword gdbSetRecordArgs contained btrace nextgroup=gdbSetRecordBtraceArgs skipwhite + syn keyword gdbSetRecordBtraceArgs contained bts nextgroup=gdbSetRecordBtraceBtsArgs skipwhite + syn keyword gdbSetRecordBtraceBtsArgs contained buffer-size nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetRecordBtraceArgs contained cpu nextgroup=gdbSetRecordBtraceCpuArgs skipwhite + syn keyword gdbSetRecordBtraceCpuArgs contained auto none + syn keyword gdbSetRecordBtraceArgs contained pt nextgroup=gdbSetRecordBtracePtArgs skipwhite + syn keyword gdbSetRecordBtracePtArgs contained buffer-size nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetRecordBtraceArgs contained replay-memory-access nextgroup=gdbSetRecordBtraceReplayMemoryAccessValue skipwhite + syn keyword gdbSetRecordBtraceReplayMemoryAccessValue contained read-only read-write + syn keyword gdbSetRecordArgs contained full nextgroup=gdbSetRecordFullArgs skipwhite + syn keyword gdbSetRecordFullArgs contained insn-number-max nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetRecordFullArgs contained memory-query + syn keyword gdbSetRecordFullArgs contained stop-at-limit + syn keyword gdbSetRecordArgs contained function-call-history-size nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetRecordArgs contained instruction-history-size nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetArgs contained ri[scv] nextgroup=gdbSetRiscvArgs skipwhite + syn keyword gdbSetRiscvArgs contained use-compressed-breakpoints nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetArgs contained se[rial] nextgroup=gdbSetSerialArgs skipwhite + syn keyword gdbSetSerialArgs contained baud nextgroup=gdbSetZIntegerValue skipwhite + syn keyword gdbSetSerialArgs contained parity nextgroup=gdbSetSerialParityValue skipwhite + syn keyword gdbSetSerialParityValue contained none odd + syn keyword gdbSetArgs contained sh nextgroup=gdbSetShArgs skipwhite + syn keyword gdbSetShArgs contained calling-convention nextgroup=gdbSetShCallingConventionValue skipwhite + syn keyword gdbSetShCallingConventionValue contained gcc renesas + syn keyword gdbSetArgs contained sou[rce] nextgroup=gdbSetSourceArgs skipwhite + syn keyword gdbSetSourceArgs contained open + syn keyword gdbSetArgs contained sty[le] nextgroup=gdbSetStyleArgs skipwhite + syn keyword gdbSetStyleArgs contained address nextgroup=gdbSetStyleAddressArgs skipwhite + syn keyword gdbSetStyleAddressArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained disassembler nextgroup=gdbSetStyleDissassemblerArgs skipwhite + syn keyword gdbSetStyleDissassemblerArgs contained enabled nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetStyleArgs contained enabled nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetStyleArgs contained filename nextgroup=gdbSetStyleFilenameArgs skipwhite + syn keyword gdbSetStyleFilenameArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained function nextgroup=gdbSetStyleFunctionArgs skipwhite + syn keyword gdbSetStyleFunctionArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained highlight nextgroup=gdbSetStyleHighlightArgs skipwhite + syn keyword gdbSetStyleHighlightArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained metadata nextgroup=gdbSetStyleMetadataArgs skipwhite + syn keyword gdbSetStyleMetadataArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained sources nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetStyleArgs contained title nextgroup=gdbSetStyleTitleArgs skipwhite + syn keyword gdbSetStyleTitleArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained tui-active-border nextgroup=gdbSetStyleTuiActiveBorderArgs skipwhite + syn keyword gdbSetStyleTuiActiveBorderArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained tui-border nextgroup=gdbSetStyleTuiBorderArgs skipwhite + syn keyword gdbSetStyleTuiBorderArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained variable nextgroup=gdbSetStyleVariableArgs skipwhite + syn keyword gdbSetStyleVariableArgs contained background foreground intensity + syn keyword gdbSetStyleArgs contained version nextgroup=gdbSetStyleVersionArgs skipwhite + syn keyword gdbSetStyleVersionArgs contained background foreground intensity + syn keyword gdbSetArgs contained tc[p] nextgroup=gdbSetTcpArgs skipwhite + syn keyword gdbSetTcpArgs contained auto-retry nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetTcpArgs contained connect-timeout nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetArgs contained td[esc] nextgroup=gdbSetTdescArgs skipwhite + syn keyword gdbSetTdescArgs contained filename nextgroup=gdbSetFilenameValue skipwhite + syn keyword gdbSetArgs contained tu[i] nextgroup=gdbSetTuiArgs skipwhite + syn keyword gdbSetTuiArgs contained active-border-mode + syn keyword gdbSetTuiArgs contained border-kind nextgroup=gdbSetTuiBorderKindValue skipwhite + syn keyword gdbSetTuiBorderKindValue contained asc ascii space + syn keyword gdbSetTuiArgs contained border-mode nextgroup=gdbSetTuiBorderModeValue skipwhite + syn keyword gdbSetTuiBorderModeValue contained normal standout reverse half half-standout bold bold-standout + syn keyword gdbSetTuiArgs contained compact-source + syn keyword gdbSetTuiArgs contained tab-width nextgroup=gdbSetZUIntegerValue skipwhite + + syn keyword gdbSetArgs contained auto-c[onnect-native-target] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained auto-l[oad] nextgroup=gdbSetAutoloadValue,gdbSetAutoloadArgs skipwhite + syn keyword gdbSetAutoloadValue contained no off 0 + syn keyword gdbSetAutoloadArgs contained gdb-scripts nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetAutoloadArgs contained guile-scripts nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetAutoloadArgs contained libthread-db nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetAutoloadArgs contained local-gdbinit nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetAutoloadArgs contained python-scripts nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetAutoloadArgs contained safe-path nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetAutoloadArgs contained scripts-directory nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained auto-s[olib-add] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained bas[enames-may-differ] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained can[-use-hw-watchpoints] nextgroup=gdbSetZIntegerValue skipwhite + syn keyword gdbSetArgs contained cas[e-sensitive] nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetArgs contained ci[rcular-trace-buffer] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained cod[e-cache] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained coe[rce-float-to-double] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained compile-a[rgs] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained compile-g[cc] nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained cp[-abi] nextgroup=gdbSetCpAbiValue skipwhite + syn keyword gdbSetCpAbiValue contained auto gnu-v2 gnu-v3 + syn keyword gdbSetArgs contained cris-d[warf2-cfi] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained cris-m[ode] nextgroup=gdbSetCrisModeValue skipwhite + syn keyword gdbSetCrisModeValue contained guru normal + syn keyword gdbSetArgs contained cris-v[ersion] nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetArgs contained data-directory nextgroup=gdbSetFilenameValue skipwhite + syn keyword gdbSetArgs contained debug nextgroup=gdbSetDebugArgs skipwhite + syn keyword gdbSetDebugArgs contained arch bpf expression microblaze mips overload record serial target varobj xtensa nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained aarch64 arc arm csky displaced frame infrun hppa jit nios2 notification observer or1k parser nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained riscv nextgroup=gdbSetDebugRiscvArgs skipwhite + syn keyword gdbSetDebugRiscvArgs contained breakpoints gdbarch infcall unwinder nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained skip symfile threads timestamp xml nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained aix-solib nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained auto-load nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained bfd-cache nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained check-physname nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained coff-pe-read nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained compile nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained compile-cplus-scopes nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained compile-cplus-types nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained dwarf-die nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained dwarf-line nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained dwarf-read nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained entry-values nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained event-loop nextgroup=gdbSetDebugEventLoopValue skipwhite + syn keyword gdbSetDebugEventLoopValue contained all all-except-ui off + syn keyword gdbSetDebugArgs contained fortran-array-slicing nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained index-cache nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained libthread-db nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained linux-namespaces nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained linux-nat nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained mach-o nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained py-breakpoint nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained py-micmd nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained py-unwind nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained remote nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained remote-packet-max-chars nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetDebugArgs contained separate-debug-file nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetDebugArgs contained solib-dsbt nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained solib-frv nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained stap-expression nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained symbol-lookup nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetDebugArgs contained symtab-create nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbSetArgs contained debug-[file-directory] nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained def[ault-collect] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained dem[angle-style] nextgroup=gdbSetDemangleStyleValue skipwhite + syn keyword gdbSetDemangleStyleValue contained auto dlang gnat gnu-v3 java none rust + syn keyword gdbSetArgs contained det[ach-on-fork] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained disab[le-randomization] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained disassemble-[next-line] nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetArgs contained disassembler[-options] nextgroup=gdbSetStringNoEscapeValue skipwhite + syn keyword gdbSetArgs contained disassembly[-flavor] nextgroup=gdbSetDisassemblyFlavorValue skipwhite + syn keyword gdbSetDisassemblyFlavorValue contained att intel + syn keyword gdbSetArgs contained disconnected-d[printf] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained disconnected-t[racing] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained disp[laced-stepping] nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetArgs contained dprintf-c[hannel] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained dprintf-f[unction] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained dprintf-s[tyle] nextgroup=gdbSetDprintfStyleValue skipwhite + syn keyword gdbSetDprintfStyleValue contained agent call gdb + syn keyword gdbSetArgs contained du[mp-excluded-mappings] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained exec-di[rection] nextgroup=gdbSetExecDirectionValue skipwhite + syn keyword gdbSetExecDirectionValue contained forward reverse + syn keyword gdbSetArgs contained exec-do[ne-display] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained exec-f[ile-mismatch] nextgroup=gdbSetExecFileMismatchValue skipwhite + syn keyword gdbSetExecFileMismatchValue contained ask off warn + syn keyword gdbSetArgs contained exec-w[rapper] nextgroup=gdbSetFilenameValue skipwhite + syn keyword gdbSetArgs contained extend[ed-prompt] nextgroup=gdbSetExtendedPromptValue skipwhite + " TODO: move this? + syn region gdbSetExtendedPromptValue contained start="\S" skip="\\$" end="\s*$" + syn match gdbStringEscape "\\[\\ efnprtvw]" containedin=gdbSetExtendedPromptValue + syn match gdbStringEscape "\\[fpt]{[^}]\+}" containedin=gdbSetExtendedPromptValue + syn match gdbStringEscape "\\\[[^]]\+]" containedin=gdbSetExtendedPromptValue + syn keyword gdbSetArgs contained extens[ion-language] nextgroup=gdbSetStringNoEscapeValue skipwhite + syn keyword gdbSetArgs contained fi[lename-display] nextgroup=gdbSetFilenameDisplayValue skipwhite + syn keyword gdbSetFilenameDisplayValue contained absolute basename relative + syn keyword gdbSetArgs contained follow-e[xec-mode] nextgroup=gdbSetFollowExecModeValue skipwhite + syn keyword gdbSetFollowExecModeValue contained new same + syn keyword gdbSetArgs contained follow-f[ork-mode] nextgroup=gdbSetFollowForkModeValue skipwhite + syn keyword gdbSetFollowForkModeValue contained child parent + syn keyword gdbSetArgs contained fr[ame-filter] nextgroup=gdbSetFrameFilterArgs skipwhite + syn keyword gdbSetFrameFilterArgs contained priority nextgroup=gdbSetFrameFilterPriorityValue skipwhite + syn keyword gdbSetFrameFilterPriorityValue contained global progspace + syn keyword gdbSetArgs contained ho[st-charset] " [charset] + syn keyword gdbSetArgs contained heu[ristic-fence-post] nextgroup=gdbSetZIntegerValue skipwhite + syn keyword gdbSetArgs contained ind[ex-cache] nextgroup=gdbSetIndexCacheArgs skipwhite + syn keyword gdbSetIndexCacheArgs contained directory nextgroup=gdbSetFilenameValue skipwhite + syn keyword gdbSetIndexCacheArgs contained enabled nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained inf[erior-tty] nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained inp[ut-radix] + syn keyword gdbSetArgs contained int[eractive-mode] nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetArgs contained lib[thread-db-search-path] nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained max-c[ompletions] nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetArgs contained max-u[ser-call-depth] nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbSetArgs contained max-v[alue-size] nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetArgs contained may-c[all-functions] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained may-insert-b[reakpoints] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained may-insert-f[ast-tracepoints] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained may-insert-t[racepoints] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained may-int[errupt] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained may-write-m[emory] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained may-write-r[egisters] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained mi-[async] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained mu[ltiple-symbols] nextgroup=gdbSetMultipleSymbolsValue skipwhite + syn keyword gdbSetMultipleSymbolsValue contained all ask cancel + syn keyword gdbSetArgs contained no[n-stop] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained op[aque-type-resolution] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained ou[tput-radix] + syn keyword gdbSetArgs contained ov[erload-resolution] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained ran[ge-stepping] nextgroup=gdbSetBooleanValue skipwhite + " TODO: remote protocol specific variables? + syn keyword gdbSetArgs contained remote nextgroup=gdbSetRemoteArgs skipwhite + syn keyword gdbSetRemoteArgs contained TracepointSource-packet + syn keyword gdbSetRemoteArgs contained Z-packet nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbSetRemoteArgs contained access-watchpoint-packet + syn keyword gdbSetRemoteArgs contained agent-packet + syn keyword gdbSetRemoteArgs contained allow-packet + syn keyword gdbSetRemoteArgs contained attach-packet + syn keyword gdbSetRemoteArgs contained binary-download-packet + syn keyword gdbSetRemoteArgs contained X-packet + syn keyword gdbSetRemoteArgs contained breakpoint-commands-packet + syn keyword gdbSetRemoteArgs contained btrace-conf-bts-size-packet + syn keyword gdbSetRemoteArgs contained btrace-conf-pt-size-packet + syn keyword gdbSetRemoteArgs contained catch-syscalls-packet + syn keyword gdbSetRemoteArgs contained conditional-breakpoints-packet + syn keyword gdbSetRemoteArgs contained conditional-tracepoints-packet + syn keyword gdbSetRemoteArgs contained ctrl-c-packet + syn keyword gdbSetRemoteArgs contained disable-btrace-packet + syn keyword gdbSetRemoteArgs contained disable-randomization-packet + syn keyword gdbSetRemoteArgs contained enable-btrace-bts-packet + syn keyword gdbSetRemoteArgs contained enable-btrace-pt-packet + syn keyword gdbSetRemoteArgs contained environment-hex-encoded-packet + syn keyword gdbSetRemoteArgs contained environment-reset-packet + syn keyword gdbSetRemoteArgs contained environment-unset-packet + syn keyword gdbSetRemoteArgs contained exec-event-feature-packet + syn keyword gdbSetRemoteArgs contained exec-file nextgroup=gdbSetStringNoEscapeValue skipwhite + syn keyword gdbSetRemoteArgs contained fast-tracepoints-packet + syn keyword gdbSetRemoteArgs contained fetch-register-packet + syn keyword gdbSetRemoteArgs contained p-packet + syn keyword gdbSetRemoteArgs contained fork-event-feature-packet + syn keyword gdbSetRemoteArgs contained get-thread-information-block-address-packet + syn keyword gdbSetRemoteArgs contained get-thread-local-storage-address-packet + syn keyword gdbSetRemoteArgs contained hardware-breakpoint-limit nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetRemoteArgs contained hardware-breakpoint-packet + syn keyword gdbSetRemoteArgs contained hardware-watchpoint-length-limit nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetRemoteArgs contained hardware-watchpoint-limit nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetRemoteArgs contained hostio-close-packet + syn keyword gdbSetRemoteArgs contained hostio-fstat-packet + syn keyword gdbSetRemoteArgs contained hostio-open-packet + syn keyword gdbSetRemoteArgs contained hostio-pread-packet + syn keyword gdbSetRemoteArgs contained hostio-pwrite-packet + syn keyword gdbSetRemoteArgs contained hostio-readlink-packet + syn keyword gdbSetRemoteArgs contained hostio-setfs-packet + syn keyword gdbSetRemoteArgs contained hostio-unlink-packet + syn keyword gdbSetRemoteArgs contained hwbreak-feature-packet + syn keyword gdbSetRemoteArgs contained install-in-trace-packet + syn keyword gdbSetRemoteArgs contained interrupt-on-connect + syn keyword gdbSetRemoteArgs contained interrupt-sequence nextgroup=gdbSetRemoteInterruptSequenceValue skipwhite + syn keyword gdbSetRemoteInterruptSequenceValue contained BREAK BREAK-g Ctrl-C + syn keyword gdbSetRemoteArgs contained kill-packet + syn keyword gdbSetRemoteArgs contained library-info-packet + syn keyword gdbSetRemoteArgs contained library-info-svr4-packet + syn keyword gdbSetRemoteArgs contained memory-map-packet + syn keyword gdbSetRemoteArgs contained memory-read-packet-size + syn keyword gdbSetRemoteArgs contained memory-tagging-feature-packet + syn keyword gdbSetRemoteArgs contained memory-write-packet-size + syn keyword gdbSetRemoteArgs contained multiprocess-feature-packet + syn keyword gdbSetRemoteArgs contained no-resumed-stop-reply-packet + syn keyword gdbSetRemoteArgs contained noack-packet + syn keyword gdbSetRemoteArgs contained osdata-packet + syn keyword gdbSetRemoteArgs contained pass-signals-packet + syn keyword gdbSetRemoteArgs contained pid-to-exec-file-packet + syn keyword gdbSetRemoteArgs contained program-signals-packet + syn keyword gdbSetRemoteArgs contained query-attached-packet + syn keyword gdbSetRemoteArgs contained read-aux-vector-packet + syn keyword gdbSetRemoteArgs contained read-btrace-conf-packet + syn keyword gdbSetRemoteArgs contained read-btrace-packet + syn keyword gdbSetRemoteArgs contained read-fdpic-loadmap-packet + syn keyword gdbSetRemoteArgs contained read-sdata-object-packet + syn keyword gdbSetRemoteArgs contained read-siginfo-object-packet + syn keyword gdbSetRemoteArgs contained read-watchpoint-packet + syn keyword gdbSetRemoteArgs contained reverse-continue-packet + syn keyword gdbSetRemoteArgs contained reverse-step-packet + syn keyword gdbSetRemoteArgs contained run-packet + syn keyword gdbSetRemoteArgs contained search-memory-packet + syn keyword gdbSetRemoteArgs contained set-register-packet + syn keyword gdbSetRemoteArgs contained P-packet + syn keyword gdbSetRemoteArgs contained set-working-dir-packet + syn keyword gdbSetRemoteArgs contained software-breakpoint-packet + syn keyword gdbSetRemoteArgs contained startup-with-shell-packet + syn keyword gdbSetRemoteArgs contained static-tracepoints-packet + syn keyword gdbSetRemoteArgs contained supported-packets-packet + syn keyword gdbSetRemoteArgs contained swbreak-feature-packet + syn keyword gdbSetRemoteArgs contained symbol-lookup-packet + syn keyword gdbSetRemoteArgs contained system-call-allowed + syn keyword gdbSetRemoteArgs contained target-features-packet + syn keyword gdbSetRemoteArgs contained thread-events-packet + syn keyword gdbSetRemoteArgs contained threads-packet + syn keyword gdbSetRemoteArgs contained trace-buffer-size-packet + syn keyword gdbSetRemoteArgs contained trace-status-packet + syn keyword gdbSetRemoteArgs contained traceframe-info-packet + syn keyword gdbSetRemoteArgs contained unwind-info-block-packet + syn keyword gdbSetRemoteArgs contained verbose-resume-packet + syn keyword gdbSetRemoteArgs contained verbose-resume-supported-packet + syn keyword gdbSetRemoteArgs contained vfork-event-feature-packet + syn keyword gdbSetRemoteArgs contained write-siginfo-object-packet + syn keyword gdbSetRemoteArgs contained write-watchpoint-packet + syn keyword gdbSetArgs contained remote-[mips64-transfers-32bit-regs] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained schedule-[multiple] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained schedule[r-locking] nextgroup=gdbSetSchedulerLockingValue skipwhite + syn keyword gdbSetSchedulerLockingValue contained on off replay step + syn keyword gdbSetArgs contained scr[ipt-extension] nextgroup=gdbSetScriptExtensionValue skipwhite + syn keyword gdbSetScriptExtensionValue contained off soft strict + syn keyword gdbSetArgs contained solib-s[earch-path] nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained stac[k-cache] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained startup-q[uietly] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained startup-w[ith-shell] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained ste[p-mode] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained sto[p-on-solib-events] nextgroup=gdbSetZIntegerValue skipwhite + syn keyword gdbSetArgs contained str[uct-convention] nextgroup=gdbSetStructConventionValue skipwhite + syn keyword gdbSetStructConventionValue contained default pcc reg + syn keyword gdbSetArgs contained sub[stitute-path] nextgroup=gdbSetFilenameValue skipwhite + syn keyword gdbSetArgs contained sup[press-cli-notifications] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained sy[sroot] solib-a[bsolute-prefix] nextgroup=gdbSetOptionalFilenameValue skipwhite + syn keyword gdbSetArgs contained target-c[harset] " [charset] + syn keyword gdbSetArgs contained target-f[ile-system-kind] nextgroup=gdbSetTargetFileSystemKindValue skipwhite + syn keyword gdbSetTargetFileSystemKindValue contained auto unix dos-based + syn keyword gdbSetArgs contained target-w[ide-charset] " [charset] + syn keyword gdbSetArgs contained trace-b[uffer-size] nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbSetArgs contained trace-c[ommands] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained trace-n[otes] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained trace-s[top-notes] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained trace-u[ser] nextgroup=gdbSetStringValue skipwhite + syn keyword gdbSetArgs contained tru[st-readonly-sections] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained unwind-[on-terminating-exception] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained unwindo[nsignal] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained use-c[oredump-filter] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained use-d[eprecated-index-sections] nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbSetArgs contained vars[ize-limit] nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + " }}}3 + +syn keyword gdbCommand contained und[isplay] +syn keyword gdbCommand contained wha[tis] +syn match gdbWith contained "\<\%(wit\%[h]\|w\)\>" nextgroup=gdbSetArgs skipwhite +syn region gdbWrappedCommand contained start="\<\%(wit\%[h]\|w\)\>" matchgroup=gdbCommandAnchor end="--" end="$" skip="\\$" transparent contains=gdbWith,gdbLineContinuation nextgroup=gdbCommand skipwhite keepend +syn keyword gdbCommand contained x nextgroup=gdbFormat +syn match gdbFormat contained "/\%(-\=\d*\)\=[oxdutfaicsz]\=[bhwg]\=" +syn match gdbFormat contained "/\%(-\=\d*\)\=[bhwg]\=[oxdutfaicsz]\=" + +" files {{{2 +syn keyword gdbCommand contained add-symbol-file +syn keyword gdbCommand contained add-symbol-file-[from-memory] +syn keyword gdbCommand contained cd +syn keyword gdbCommand contained co[re-file] +syn keyword gdbCommand contained dir[ectory] +syn keyword gdbCommand contained ed[it] +syn keyword gdbCommand contained exe[c-file] +syn keyword gdbCommand contained fil[e] +syn keyword gdbCommand contained for[ward-search] fo sea[rch] +syn keyword gdbCommand contained ge[nerate-core-file] gc[ore] +syn keyword gdbCommand contained li[st] l +syn keyword gdbCommand contained lo[ad] +syn keyword gdbCommand contained no[sharedlibrary] +syn keyword gdbCommand contained pat[h] +syn keyword gdbCommand contained pw[d] +syn keyword gdbCommand contained remot[e] nextgroup=gdbRemoteArgs skipwhite + syn keyword gdbRemoteArgs contained d[elete] g[et] p[ut] +syn keyword gdbCommand contained remove-s[ymbol-file] +syn keyword gdbCommand contained reverse-se[arch] rev +syn keyword gdbCommand contained sec[tion] +syn keyword gdbCommand contained sha[redlibrary] +syn keyword gdbCommand contained sy[mbol-file] + +" internals {{{2 +syn keyword gdbCommand contained mai[ntenance] mt nextgroup=gdbMaintenanceArgs skipwhite + syn keyword gdbMaintenanceArgs contained agent + syn keyword gdbMaintenanceArgs contained agent-eval + syn keyword gdbMaintenanceArgs contained agent-printf + syn keyword gdbMaintenanceArgs contained btrace nextgroup=gdbMaintenanceBtraceArgs skipwhite + syn keyword gdbMaintenanceBtraceArgs contained clear clear-packet-history packet-history + syn keyword gdbMaintenanceArgs contained check nextgroup=gdbMaintenanceCheckArgs skipwhite + syn keyword gdbMaintenanceCheckArgs contained libthread-db xml-descriptions + syn keyword gdbMaintenanceArgs contained check-psymtabs + syn keyword gdbMaintenanceArgs contained check-symtabs + syn keyword gdbMaintenanceArgs contained cplus cp nextgroup=gdbMaintenanceCplusArgs skipwhite + syn keyword gdbMaintenanceCplusArgs contained first_component + syn keyword gdbMaintenanceArgs contained demangler-warning + syn keyword gdbMaintenanceArgs contained deprecate + syn keyword gdbMaintenanceArgs contained dump-me + syn keyword gdbMaintenanceArgs contained expand-symtabs + syn keyword gdbMaintenanceArgs contained flush nextgroup=gdbMaintenanceFlushArgs skipwhite + syn keyword gdbMaintenanceFlushArgs contained dcache register-cache source-cache symbol-cache + syn keyword gdbMaintenanceArgs contained info i nextgroup=gdbMaintenanceInfoArgs skipwhite + syn keyword gdbMaintenanceInfoArgs contained bfds breakpoints btrace jit line-table program-spaces psymtabs sections selftests + syn keyword gdbMaintenanceInfoArgs contained symtabs target-sections + syn keyword gdbMaintenanceArgs contained internal-error + syn keyword gdbMaintenanceArgs contained internal-warning + syn keyword gdbMaintenanceArgs contained packet + syn keyword gdbMaintenanceArgs contained print nextgroup=gdbMaintenancePrintArgs skipwhite + syn keyword gdbMaintenancePrintArgs contained arc nextgroup=gdbMaintenancePrintArcArgs skipwhite + syn keyword gdbMaintenancePrintArcArgs contained arc-instruction + syn keyword gdbMaintenancePrintArgs contained architecture c-tdesc cooked-registers core-file-backed-mappings dummy-frames + syn keyword gdbMaintenancePrintArgs contained msymbols objfiles psymbols raw-registers reggroups register-groups registers + syn keyword gdbMaintenancePrintArgs contained remote-registers statistics symbol-cache symbol-cache-statistics symbols + syn keyword gdbMaintenancePrintArgs contained target-stack type unwind user-registers xml-tdesc + syn keyword gdbMaintenanceArgs contained selftest + syn keyword gdbMaintenanceArgs contained set nextgroup=gdbMaintenanceSetArgs skipwhite + syn keyword gdbMaintenanceSetArgs contained ada nextgroup=gdbMaintenanceSetAdaArgs skipwhite + syn keyword gdbMaintenanceSetAdaArgs contained ignore-descriptive-types nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained backtrace-on-fatal-signal nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained bfd-sharing nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained btrace nextgroup=gdbMaintenanceSetBtraceArgs skipwhite + syn keyword gdbMaintenanceSetBtraceArgs contained pt nextgroup=gdbMaintenanceSetBtracePtArgs skipwhite + syn keyword gdbMaintenanceSetBtracePtArgs contained skip-pad nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained catch-demangler-crashes nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained check-libthread-db nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained demangler-warning nextgroup=gdbMaintenanceSetDemanglerWarningArgs skipwhite + syn keyword gdbMaintenanceSetDemanglerWarningArgs contained quit nextgroup=@gdbSetAskBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained dwarf nextgroup=gdbMaintenanceSetDwarfArgs skipwhite + syn keyword gdbMaintenanceSetDwarfArgs contained always-disassemble unwinders nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetDwarfArgs contained max-cache-age nextgroup=gdbSetZIntegerValue skipwhite + syn keyword gdbMaintenanceSetArgs contained gnu-source-highlight nextgroup=gdbMaintenanceSetGnuSourceHighlightArgs skipwhite + syn keyword gdbMaintenanceSetGnuSourceHighlightArgs contained enabled nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained internal-error nextgroup=gdbMaintenanceSetInternalErrorArgs skipwhite + syn keyword gdbMaintenanceSetInternalErrorArgs contained backtrace nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetInternalErrorArgs contained corefile quit nextgroup=@gdbSetAskBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained internal-warning nextgroup=gdbMaintenanceSetInternalWarningArgs skipwhite + syn keyword gdbMaintenanceSetInternalWarningArgs contained backtrace nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetInternalWarningArgs contained corefile quit nextgroup=@gdbSetAskBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained per-command nextgroup=gdbMaintenanceSetPerCommandArgs skipwhite + syn keyword gdbMaintenanceSetPerCommandArgs contained space symtab time nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained profile nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained selftest nextgroup=gdbMaintenanceSetSelftestArgs skipwhite + syn keyword gdbMaintenanceSetSelftestArgs contained verbose nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained show-all-tib nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained show-debug-regs nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained symbol-cache-size nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbMaintenanceSetArgs contained target-async nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained target-non-stop nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained test-settings nextgroup=gdbMaintenanceSetTestSettingsArgs skipwhite + syn keyword gdbMaintenanceSetTestSettingsArgs contained auto-boolean nextgroup=gdbSetAutoBooleanValue skipwhite + syn keyword gdbMaintenanceSetTestSettingsArgs contained boolean nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetTestSettingsArgs contained enum + syn keyword gdbMaintenanceSetTestSettingsArgs contained filename + syn keyword gdbMaintenanceSetTestSettingsArgs contained integer nextgroup=gdbSetIntegerValue skipwhite + syn keyword gdbMaintenanceSetTestSettingsArgs contained optional-filename + syn keyword gdbMaintenanceSetTestSettingsArgs contained string + syn keyword gdbMaintenanceSetTestSettingsArgs contained string-noescape + syn keyword gdbMaintenanceSetTestSettingsArgs contained uinteger nextgroup=gdbSetUIntegerValue skipwhite + syn keyword gdbMaintenanceSetTestSettingsArgs contained zinteger nextgroup=gdbSetZIntegerValue skipwhite + syn keyword gdbMaintenanceSetTestSettingsArgs contained zuinteger nextgroup=gdbSetZUIntegerValue skipwhite + syn keyword gdbMaintenanceSetTestSettingsArgs contained zuinteger-unlimited nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbMaintenanceSetArgs contained tui-resize-message nextgroup=gdbSetBooleanValue skipwhite + syn keyword gdbMaintenanceSetArgs contained worker-threads nextgroup=gdbSetZUIntegerUnlimitedValue skipwhite + syn keyword gdbMaintenanceArgs contained show nextgroup=gdbMaintenanceShowArgs,gdbMaintenanceSetArgs skipwhite + syn keyword gdbMaintenanceShowArgs contained test-options-completion-result + syn keyword gdbMaintenanceArgs contained space + syn keyword gdbMaintenanceArgs contained test-options nextgroup=gdbMaintenanceTestOptionsArgs skipwhite + syn keyword gdbMaintenanceTestOptionsArgs contained require-delimiter unknown-is-error unknown-is-operand + syn keyword gdbMaintenanceArgs contained time + syn keyword gdbMaintenanceArgs contained translate-address + syn keyword gdbMaintenanceArgs contained undeprecate + syn keyword gdbMaintenanceArgs contained with + +" obscure {{{2 +syn keyword gdbCommand contained ch[eckpoint] +syn keyword gdbCommand contained compa[re-sections] + +" syn keyword gdbCommand contained compi[le] exp[ression] +" syn keyword gdbCommand contained compi[le] exp[ression] nextgroup=gdbCompileArgs skipwhite +" syn keyword gdbCompile contained compi[le] exp[ression] nextgroup=gdbCompileArgs skipwhite +syn match gdbCompile contained "\<\%(compi\%[le]\|exp\%[ression]\)\>" nextgroup=gdbCompileArgs skipwhite + syn keyword gdbCompileArgs contained c[ode] nextgroup=gdbCompileCodeOptions,@gdbC skipwhite + syn match gdbCompileCodeOptions contained "--\|\%(-r\%[aw]\)\(\s\+--\)\=" nextgroup=@gdbC skipwhite + syn keyword gdbCompileArgs contained f[ile] nextgroup=gdbCompileCodeOptions skipwhite + syn keyword gdbCompileArgs contained p[rint] nextgroup=gdbCompilePrintOptions,gdbCompilePrintFormat,@gdbC skipwhite + " TODO: proper option support + syn match gdbCompilePrintOptions contained "\%(-\w\+\%(\s\+\w\+\)\=\s\+\)*--" nextgroup=@gdbC,gdbCompilePrintFormat skipwhite + syn match gdbCompilePrintFormat contained "/[oxdutfaicsz]" nextgroup=@gdbC skipwhite + +syn region gdbCommand contained start="\<\%(compi\%[le]\|exp\%[ression]\)\s\+c\%[ode]\ze\s" skip="\\$" end="$" contains=gdbCompile,@gdbC keepend transparent fold +syn region gdbMultilineCommand contained start="\<\%(compi\%[le]\|exp\%[ression]\)\s\+c\%[ode]\%(\s\+-r\%[aw]\)\=\%(\s\+--\)\=\s*$" matchgroup=gdbCommand end="^\s*\zsend\ze\s*$" contains=gdbCompile,@gdbC transparent fold +syn region gdbCommand contained start="\<\%(compi\%[le]\|exp\%[ression]\)\s\+p\%[rint]\ze\s" skip="\\$" end="$" contains=gdbCompile,@gdbC keepend transparent fold +syn region gdbMultilineCommand contained start="\<\%(compi\%[le]\|exp\%[ression]\)\s\+p\%[rint]\%(\%(\s\+-.*\)\=\s\+--\)\=\%(\s\+/[a-z]\)\=\s*$" matchgroup=gdbCommand end="^\s*\zsend\ze\s*$" contains=gdbCompile,@gdbC transparent fold + +syn keyword gdbCommand contained compl[ete] + +" Guile {{{3 +syn include @gdbGuile syntax/scheme.vim +unlet b:current_syntax +syn keyword gdbCommand contained guile-repl +syn keyword gdbCommand contained gr +syn region gdbCommand contained matchgroup=gdbCommand start="\" nextgroup=gdbAliasEndOption,gdbAliasName skipwhite + syn match gdbAliasName contained "\<\w\%(\w\|-\)*\>" nextgroup=gdbAliasEquals skipwhite + syn match gdbAliasEquals contained "=" nextgroup=@gdbCommands skipwhite + +syn keyword gdbCommand contained apr[opos] + +syn region gdbDefine contained matchgroup=gdbCommand start="\" end="^\s*\zsend\ze\s*$" contains=TOP transparent fold +syn keyword gdbCommand contained define-[prefix] +syn keyword gdbCommand contained dem[angle] + +syn region gdbDocument contained matchgroup=gdbCommand start="\" end="^\s*\zsend\ze\s*$" fold contains=gdbDocumentCommand + +syn keyword gdbCommand contained don[t-repeat] +syn keyword gdbCommand contained down-[silently] +syn keyword gdbCommand contained ec[ho] nextgroup=gdbUnquotedString skipwhite + " TODO: move + syn region gdbUnquotedString contained start="\S" skip="\\$" end="$" contains=gdbStringEscape,gdbLineContinuation + hi def link gdbUnquotedString String + " syn region gdbUnquotedStringNoEscape contained start="\S" skip="\\$" end="$" contains=gdbLineContinuation + " hi def link gdbUnquotedStringNoEscape String +syn keyword gdbCommand contained he[lp] h + +syn region gdbIf contained matchgroup=gdbCommand start="\" end="\%(^\s*\)\@<=end\ze\s*$" contains=TOP transparent fold +syn keyword gdbCommand contained else containedin=gdbIf + +syn keyword gdbCommand contained interp[reter-exec] +syn keyword gdbCommand contained mak[e] +syn keyword gdbCommand contained new[-ui] +syn keyword gdbCommand contained ov[erlay] ov ovly nextgroup=gdbOverlayArgs skipwhite + syn keyword gdbOverlayArgs contained a[uto] li[st-overlays] lo[ad-target] man[ual] map[-overlay] o[ff] u[nmap-overlay] +" TODO: pi completes as pipe ignoring pi (python-interactive) +" : sh region +syn keyword gdbCommand contained pip[e] +syn match gdbCommand contained "|" +syn keyword gdbCommand contained qui[t] exi[t] q +syn keyword gdbCommand contained she[ll] nextgroup=gdbShellValue skipwhite +syn match gdbCommand contained "!" nextgroup=gdbShellValue skipwhite + syn include @gdbSh syntax/sh.vim + unlet b:current_syntax + syn region gdbShellValue contained start="\S" skip="\\$" end="$" contains=@gdbSh,gdbLineContinuation keepend +syn keyword gdbCommand contained so[urce] nextgroup=gdbSourceOption skipwhite + syn match gdbSourceOption contained "\<-[sv]\>" nextgroup=gdbSourceOption skipwhite +syn keyword gdbCommand contained up-[silently] + +syn region gdbWhile contained matchgroup=gdbCommand start="\" end="\%(^\s*\)\@<=end\ze\s*$" contains=TOP transparent fold +syn keyword gdbCommand contained loop_b[reak] loop_c[ontinue] containedin=gdbWhile + +" text-user-interface {{{2 +syn match gdbCommand contained "[<>+-]" +syn keyword gdbCommand contained foc[us] fs +syn keyword gdbCommand contained la[yout] nextgroup=gdbLayoutArgs skipwhite + syn keyword gdbLayoutArgs contained a[sm] n[ext] p[rev] r[egs] sp[lit] sr[c] +syn keyword gdbCommand contained ref[resh] +syn keyword gdbCommand contained tu[i] nextgroup=gdbTuiArgs skipwhite + syn keyword gdbTuiArgs contained d[isable] e[nable] n[ew-layout] r[eg] +syn keyword gdbCommand contained upd[ate] +syn keyword gdbCommand contained win[height] wh nextgroup=gdbWindowName skipwhite + syn keyword gdbWindowName contained a[sm] c[md] sr[c] st[atus] r[egs] + +" tracepoints {{{2 +syn keyword gdbCommand contained ac[tions] +syn keyword gdbCommand contained col[lect] +syn keyword gdbCommand contained end +syn keyword gdbCommand contained pas[scount] +syn keyword gdbCommand contained t[dump] +syn keyword gdbCommand contained tev[al] +syn keyword gdbCommand contained tfi[nd] nextgroup=gdbTfindArgs skipwhite + syn keyword gdbTfindArgs contained e[nd] l[ine] n[one] o[utside] p[c] r[ange] s[tart] t[racepoint] +syn keyword gdbCommand contained tsa[ve] +syn keyword gdbCommand contained tstar[t] +syn keyword gdbCommand contained tstat[us] +syn keyword gdbCommand contained tsto[p] +syn keyword gdbCommand contained tv[ariable] +syn keyword gdbCommand contained while-stepping stepp[ing] ws + +" unclassified {{{2 +syn keyword gdbCommand contained add-i[nferior] +syn keyword gdbCommand contained clo[ne-inferior] +syn keyword gdbCommand contained ev[al] +syn keyword gdbCommand contained fl[ash-erase] +syn keyword gdbCommand contained fu[nction] +syn keyword gdbCommand contained jit-reader-l[oad] +syn keyword gdbCommand contained jit-reader-u[nload] +syn keyword gdbCommand contained remove-i[nferiors] +syn keyword gdbCommand contained uns[et] nextgroup=gdbUnsetArgs skipwhite + syn keyword gdbUnsetArgs contained environment exec-wrapper substitute-path + syn keyword gdbUnsetArgs contained tdesc nextgroup=gdbUnsetTdescArgs skipwhite + syn keyword gdbUnsetTdescArgs contained filename + syn keyword gdbUnsetArgs contained exec-wrapper + syn keyword gdbUnsetArgs contained substitute-path +syn keyword gdbCommand contained bo[okmark] +syn keyword gdbCommand contained go[to-bookmark] +" }}} + +" Command syntax {{{1 +syn keyword gdbPrefix contained server nextgroup=gdbCommand skipwhite + +syn cluster gdbCommands contains=gdbCommand,gdbMultilineCommand,gdbCompile,gdbDefine,gdbDocument,gdbIf,gdbWhile,gdbPrefix,gdbWrappedCommand + +syn match gdbCommandAnchor "^" nextgroup=@gdbCommands skipwhite +" TODO: give higher priority than \\ in unquoted strings as \\$ matches \ escape of first char on following line +syn match gdbLineContinuation "\\$" + +" Comments {{{1 +syn match gdbComment "^\s*\zs#.*" contains=@Spell + +" Variables {{{1 +syn match gdbVariable "\$\K\k*" + +" Strings and constants {{{1 +syn region gdbString start=+"+ skip=+\\\\\|\\"+ end=+"+ contains=gdbStringEscape,@Spell +syn match gdbStringEscape contained "\\[abfnrtv\\'" ]" +syn match gdbStringEscape contained "\\\o\{1,3}" syn match gdbCharacter "'[^']*'" contains=gdbSpecialChar,gdbSpecialCharError syn match gdbCharacter "'\\''" contains=gdbSpecialChar syn match gdbCharacter "'[^\\]'" syn match gdbNumber "\<[0-9_]\+\>" syn match gdbNumber "\<0x[0-9a-fA-F_]\+\>" +syn match gdbNumber "\<0\o\+\>" +syn match gdbNumber "\<\d\+\>\.\=" +syn match gdbNumber "\<0x\x\+\>" -if !exists("gdb_minlines") - let gdb_minlines = 10 -endif -exec "syn sync ccomment gdbComment minlines=" . gdb_minlines +" Architecture {{{2 +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" +syn match gdbArchitecture contained "\" -" Define the default highlighting. +" Sync {{{1 +exec "syn sync minlines=" .. get(g:, "gdb_minlines", 100) +exec "syn sync maxlines=" .. get(g:, "gdb_minlines", 200) +syn sync ccomment gdbComment +syn sync linecont "\\$" + +" Default Highlighting {{{1 " Only when an item doesn't have highlighting yet -hi def link gdbFuncDef Function -hi def link gdbComment Comment -hi def link gdbStatement Statement -hi def link gdbString String +hi def link gdbCompile gdbCommand +hi def link gdbFuncDef Function +hi def link gdbComment Comment +hi def link gdbCommand Statement +hi def link gdbPrefix gdbCommand +hi def link gdbString String +hi def link gdbStringEscape SpecialChar hi def link gdbCharacter Character -hi def link gdbVariable Identifier -hi def link gdbSet Constant -hi def link gdbInfo Type -hi def link gdbDocument Special -hi def link gdbNumber Number +hi def link gdbVariable Identifier +hi def link gdbWith gdbCommand + +" Command options {{{2 +hi def link gdbFormat Special +hi def link gdbPrintFormat gdbFormat +hi def link gdbOption Special +hi def link gdbCompileCodeOptions gdbOption +hi def link gdbCompilePrintOptions gdbOption +hi def link gdbCompilePrintFormat gdbFormat + +" Subcommands {{{2 +hi def link gdbCommandArgs Type +hi def link gdbAdiArgs gdbCommandArgs +hi def link gdbAliasOption gdbCommandArgs +hi def link gdbAliasEndOption gdbCommandArgs +hi def link gdbAppendArgs gdbCommandArgs +hi def link gdbAppendBinaryArgs gdbAppendArgs +hi def link gdbCatchArgs gdbCommandArgs +hi def link gdbCompileArgs gdbCommandArgs +hi def link gdbConditionOption gdbCommandArgs +hi def link gdbConditionEndOption gdbCommandArgs +hi def link gdbDeleteArgs gdbCommandArgs +hi def link gdbDetachArgs gdbCommandArgs +hi def link gdbDisableArgs gdbCommandArgs +hi def link gdbDumpArgs gdbCommandArgs +hi def link gdbDumpBinaryArgs gdbDumpArgs +hi def link gdbEnableArgs gdbCommandArgs +hi def link gdbEnableBreakpointArgs gdbEnableArgs +hi def link gdbExploreArgs gdbCommandArgs +hi def link gdbFrameArgs gdbCommandArgs +hi def link gdbFrameApplyArgs gdbCommandArgs +hi def link gdbInfoArgs gdbCommandArgs +hi def link gdbInfoAutoLoadArgs gdbInfoArgs +hi def link gdbInfoFrameArgs gdbInfoArgs +hi def link gdbInfoModuleArgs gdbInfoArgs +hi def link gdbInfoProbesArgs gdbInfoArgs +hi def link gdbInfoProcArgs gdbInfoArgs +hi def link gdbInfoW32Args gdbInfoArgs +hi def link gdbKillArgs gdbCommandArgs +hi def link gdbLayoutArgs gdbCommandArgs +hi def link gdbMacroArgs gdbCommandArgs +hi def link gdbMaintenanceArgs gdbCommandArgs +hi def link gdbMaintenanceBtraceArgs gdbCommandArgs +hi def link gdbMaintenanceCheckArgs gdbCommandArgs +hi def link gdbMaintenanceCplusArgs gdbCommandArgs +hi def link gdbMaintenanceFlushArgs gdbCommandArgs +hi def link gdbMaintenanceInfoArgs gdbCommandArgs +hi def link gdbMaintenancePrintArgs gdbCommandArgs +hi def link gdbMaintenancePrintArcArgs gdbCommandArgs +hi def link gdbMaintenanceSetArgs gdbCommandArgs +hi def link gdbMaintenanceSetAdaArgs gdbCommandArgs +hi def link gdbMaintenanceSetBtraceArgs gdbCommandArgs +hi def link gdbMaintenanceSetBtracePtArgs gdbCommandArgs +hi def link gdbMaintenanceSetDemanglerWarningArgs gdbCommandArgs +hi def link gdbMaintenanceSetDwarfArgs gdbCommandArgs +hi def link gdbMaintenanceSetGnuSourceHighlightArgs gdbCommandArgs +hi def link gdbMaintenanceSetInternalErrorArgs gdbCommandArgs +hi def link gdbMaintenanceSetInternalErrorArgs gdbCommandArgs +hi def link gdbMaintenanceSetInternalWarningArgs gdbCommandArgs +hi def link gdbMaintenanceSetPerCommandArgs gdbCommandArgs +hi def link gdbMaintenanceSetSelftestArgs gdbCommandArgs +hi def link gdbMaintenanceSetTestSettingsArgs gdbCommandArgs +hi def link gdbMaintenanceShowArgs gdbCommandArgs +hi def link gdbMaintenanceTestOptionsArgs gdbCommandArgs +hi def link gdbMemoryTagArgs gdbCommandArgs +hi def link gdbOverlayArgs gdbCommandArgs +hi def link gdbRecordArgs gdbCommandArgs +hi def link gdbRecordBtraceArgs gdbRecordArgs +hi def link gdbRecordGotoArgs gdbRecordArgs +hi def link gdbRecordFullArgs gdbRecordArgs +hi def link gdbRemoteArgs gdbCommandArgs +hi def link gdbSaveArgs gdbCommandArgs +hi def link gdbSelectFrameArgs gdbCommandArgs +hi def link gdbSkipArgs gdbCommandArgs +hi def link gdbSetArgs gdbCommandArgs +hi def link gdbSetAdaArgs gdbCommandArgs +hi def link gdbSetArmArgs gdbCommandArgs +hi def link gdbSetAutoloadArgs gdbCommandArgs +hi def link gdbSetBacktraceArgs gdbCommandArgs +hi def link gdbSetBreakpointArgs gdbCommandArgs +hi def link gdbSetCheckArgs gdbCommandArgs +hi def link gdbSetDcacheArgs gdbCommandArgs +hi def link gdbSetDebugArgs gdbCommandArgs +hi def link gdbSetDebuginfodArgs gdbCommandArgs +hi def link gdbSetDebugRiscvArgs gdbCommandArgs +hi def link gdbSetFortranArgs gdbCommandArgs +hi def link gdbSetFrameFilterArgs gdbCommandArgs +hi def link gdbSetGuileArgs gdbCommandArgs +hi def link gdbSetHistoryArgs gdbCommandArgs +hi def link gdbSetIndexCacheArgs gdbCommandArgs +hi def link gdbSetLoggingArgs gdbCommandArgs +hi def link gdbSetMemArgs gdbCommandArgs +hi def link gdbSetMipsArgs gdbCommandArgs +hi def link gdbSetMpxArgs gdbCommandArgs +hi def link gdbSetPowerpcArgs gdbCommandArgs +hi def link gdbSetPrintArgs gdbCommandArgs +hi def link gdbSetPrintTypeArgs gdbSetPrintArgs +hi def link gdbSetPythonArgs gdbCommandArgs +hi def link gdbSetRavenscarArgs gdbCommandArgs +hi def link gdbSetRecordArgs gdbCommandArgs +hi def link gdbSetRecordBtraceArgs gdbSetRecordArgs +hi def link gdbSetRecordBtraceBtsArgs gdbSetRecordBtraceArgs +hi def link gdbSetRecordBtraceCpuArgs gdbSetRecordBtraceArgs +hi def link gdbSetRecordFullArgs gdbSetRecordArgs +hi def link gdbSetRecordBtracePtArgs gdbSetRecordBtraceArgs +hi def link gdbSetRemoteArgs gdbCommandArgs +hi def link gdbSetRiscvArgs gdbCommandArgs +hi def link gdbSetSerialArgs gdbCommandArgs +hi def link gdbSetShArgs gdbCommandArgs +hi def link gdbSetSourceArgs gdbCommandArgs +hi def link gdbSetStyleArgs gdbCommandArgs +hi def link gdbSetStyleAddressArgs gdbSetStyleArgs +hi def link gdbSetStyleDissassemblerArgs gdbSetStyleArgs +hi def link gdbSetStyleFilenameArgs gdbSetStyleArgs +hi def link gdbSetStyleFunctionArgs gdbSetStyleArgs +hi def link gdbSetStyleHighlightArgs gdbSetStyleArgs +hi def link gdbSetStyleMetadataArgs gdbSetStyleArgs +hi def link gdbSetStyleTitleArgs gdbSetStyleArgs +hi def link gdbSetStyleTuiActiveBorderArgs gdbSetStyleArgs +hi def link gdbSetStyleTuiBorderArgs gdbSetStyleArgs +hi def link gdbSetStyleVariableArgs gdbSetStyleArgs +hi def link gdbSetStyleVersionArgs gdbSetStyleArgs +hi def link gdbSetTuiArgs gdbCommandArgs +hi def link gdbSetTcpArgs gdbCommandArgs +hi def link gdbSetTdescArgs gdbCommandArgs +hi def link gdbShowArgs gdbCommandArgs +hi def link gdbShowIndexCacheArgs gdbCommandArgs +" TODO: dedicated option highlight group? +hi def link gdbSourceOption gdbCommandArgs +hi def link gdbTaskArgs gdbCommandArgs +hi def link gdbTaskApplyArgs gdbTaskArgs +hi def link gdbTargetArgs gdbCommandArgs +hi def link gdbTfindArgs gdbCommandArgs +hi def link gdbThreadArgs gdbCommandArgs +hi def link gdbThreadApplyArgs gdbThreadArgs +hi def link gdbTuiArgs gdbCommandArgs +hi def link gdbUnsetArgs gdbCommandArgs +hi def link gdbUnsetTdescArgs gdbUnsetArgs +hi def link gdbWatchOption gdbCommandArgs +hi def link gdbWatchEndOption gdbCommandArgs + +" Set values {{{2 +hi def link gdbSetValue Constant +hi def link gdbSetAskValue gdbSetValue +hi def link gdbSetAutoBooleanValue gdbSetValue +hi def link gdbSetBooleanValue gdbSetValue +hi def link gdbSetIntegerValue gdbSetValue +hi def link gdbSetUIntegerValue gdbSetValue +hi def link gdbSetZIntegerValue gdbSetValue +hi def link gdbSetZUIntegerValue gdbSetValue +hi def link gdbSetZUIntegerUnlimitedValue gdbSetValue +hi def link gdbSetFilenameValue gdbSetValue +hi def link gdbSetOptionalFilenameValue gdbSetValue +hi def link gdbSetStringValue gdbString +hi def link gdbSetStringNoEscapeValue gdbString +hi def link gdbSetExtendedPromptValue gdbString + +" Enum values {{{3 +hi def link gdbSetAdaSourceCharsetValue gdbSetValue +hi def link gdbSetArmAbiValue gdbSetValue +hi def link gdbSetArmDisassemblerValue gdbSetValue +hi def link gdbSetArmFallbackModeValue gdbSetValue +hi def link gdbSetArmForceModeValue gdbSetValue +hi def link gdbSetArmFpuValue gdbSetValue +hi def link gdbSetAutoloadValue gdbSetValue +hi def link gdbSetBreakpointCondtionEvaluationValue gdbSetValue +hi def link gdbSetCheckRangeValue gdbSetValue +hi def link gdbSetCpAbiValue gdbSetValue +hi def link gdbSetCrisModeValue gdbSetValue +hi def link gdbSetDebugEventLoopValue gdbSetValue +hi def link gdbSetDemangleStyleValue gdbSetValue +hi def link gdbSetDisassemblyFlavorValue gdbSetValue +hi def link gdbSetDprintfStyleValue gdbSetValue +hi def link gdbSetEndianValue gdbSetValue +hi def link gdbSetExecDirectionValue gdbSetValue +hi def link gdbSetExecFileMismatchValue gdbSetValue +hi def link gdbSetFilenameDisplayValue gdbSetValue +hi def link gdbSetFollowExecModeValue gdbSetValue +hi def link gdbSetFollowForkModeValue gdbSetValue +hi def link gdbSetFrameFilterPriorityValue gdbSetValue +hi def link gdbSetGuilePrintStackValue gdbSetValue +hi def link gdbSetLanguageValue gdbSetValue +hi def link gdbSetMipsAbiValue gdbSetValue +hi def link gdbSetMipsCompressionValue gdbSetValue +hi def link gdbSetMipsfpuValue gdbSetValue +hi def link gdbSetMultipleSymbolsValue gdbSetValue +hi def link gdbSetOsabiValue gdbSetValue +hi def link gdbSetPowerpcVectorAbiValue gdbSetValue +hi def link gdbSetPrintEntryValuesValue gdbSetValue +hi def link gdbSetPrintFrameArgumentsValue gdbSetValue +hi def link gdbSetPrintFrameInfoValue gdbSetValue +hi def link gdbSetPythonPrintStackValue gdbSetValue +hi def link gdbSetRecordBtraceReplayMemoryAccessValue gdbSetValue +hi def link gdbSetRemoteInterruptSequenceValue gdbSetValue +hi def link gdbSetRemotelogbaseValue gdbSetValue +hi def link gdbSetSchedulerLockingValue gdbSetValue +hi def link gdbSetScriptExtensionValue gdbSetValue +hi def link gdbSetSerialParityValue gdbSetValue +hi def link gdbSetShCallingConventionValue gdbSetValue +hi def link gdbSetStructConventionValue gdbSetValue +hi def link gdbSetSymbolLoadingValue gdbSetValue +hi def link gdbSetTargetFileSystemKindValue gdbSetValue +hi def link gdbSetTuiBorderKindValue gdbSetValue +hi def link gdbSetTuiBorderModeValue gdbSetValue +" }}}2 + +hi def link gdbAliasName Function +hi def link gdbArchitecture Constant +hi def link gdbWindowName Constant +hi def link gdbBreakpointCount Number +hi def link gdbBreakpointNumber Constant +hi def link gdbBreakpointRange Constant + +hi def link gdbDocument Special +hi def link gdbNumber Number +hi def link gdbLineContinuation Special +" }}} let b:current_syntax = "gdb" 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/generator/README.md b/runtime/syntax/generator/README.md index 73623721..6db445ce 100644 --- a/runtime/syntax/generator/README.md +++ b/runtime/syntax/generator/README.md @@ -3,7 +3,7 @@ This directory contains a Vim script generator, that will parse the Vim source file and generate a vim.vim syntax file. -Files in this directory where copied from https://github.com/vim-jp/syntax-vim-ex/ +Files in this directory were copied from https://github.com/vim-jp/syntax-vim-ex/ and included here on Feb, 13th, 2024 for the Vim Project. - Maintainer: Hirohito Higashi diff --git a/runtime/syntax/generator/gen_syntax_vim.vim b/runtime/syntax/generator/gen_syntax_vim.vim index 579dbbc3..3e7fe1bc 100644 --- a/runtime/syntax/generator/gen_syntax_vim.vim +++ b/runtime/syntax/generator/gen_syntax_vim.vim @@ -1,7 +1,7 @@ " Vim syntax file generator " Language: Vim script " Maintainer: Hirohito Higashi (h_east) -" Last Change: 2025 Oct 11 +" Last Change: 2025 Dec 04 let s:keepcpo= &cpo set cpo&vim @@ -31,6 +31,9 @@ function s:parse_vim_option(opt, missing_opt, term_out_code) for line in getline(1, line('$')) let list = matchlist(line, '^\s*{\s*"\(\w\+\)"\s*,\s*\%("\(\w\+\)"\|NULL\)\s*,\s*\%([^,]*\(P_BOOL\)[^,]*\|[^,]*\)\s*,\s*\([^,]*NULL\)\?.*') + if list[1] == 'completefuzzycollect' + continue + endif let item.name = list[1] let item.short_name = list[2] let item.is_bool = empty(list[3]) ? 0 : 1 @@ -288,6 +291,7 @@ function s:get_vim_command_type(cmd_name) " 6: unmap " 7: abclear " 8: modifiers + " 9: cd " 99: (Exclude registration of "syn keyword") let ab_prefix = '^[ci]\?' let menu_prefix = '^\%([acinostvx]\?\|tl\)' @@ -299,13 +303,20 @@ function s:get_vim_command_type(cmd_name) Print X abstract + argdo append augroup autocmd behave + breakadd + breakdel + breaklist browse + bufdo call catch + cdo + cfdo chdir change class @@ -313,6 +324,7 @@ function s:get_vim_command_type(cmd_name) confirm const copy + debug debuggreedy def defer @@ -343,19 +355,26 @@ function s:get_vim_command_type(cmd_name) filetype filter final + folddoopen + folddoclosed for function grep grepadd + help helpgrep highlight + history if import interface insert join k + language let + ldo + lfdo loadkeymap lhelpgrep lgrep @@ -381,6 +400,8 @@ function s:get_vim_command_type(cmd_name) popup profdel profile + promptfind + promptrepl public python pyfile @@ -411,6 +432,7 @@ function s:get_vim_command_type(cmd_name) swapname syntax syntime + tabdo tcl tcldo tclfile @@ -428,6 +450,7 @@ function s:get_vim_command_type(cmd_name) vimgrepadd while wincmd + windo EOL " Required for original behavior " \ 'global', 'vglobal' @@ -447,6 +470,9 @@ function s:get_vim_command_type(cmd_name) let ret = 6 elseif index(s:get_cmd_modifiers(), a:cmd_name) != -1 let ret = 8 + " :chdir handled specially for command/function distinction + elseif a:cmd_name =~# '^\%([lt]\?cd\|[lt]chdir\)$' + let ret = 9 else let ret = 0 endif @@ -914,6 +940,9 @@ function s:update_syntax_vim_file(vim_info) " vimCommand - modifier let lnum = s:search_and_check(kword . ' modifier', base_fname, str_info) let lnum = s:append_syn_vimcmd(lnum, str_info, li, 8) + " vimCommand - cd + let lnum = s:search_and_check(kword . ' cd', base_fname, str_info) + let lnum = s:append_syn_vimcmd(lnum, str_info, li, 9) update quit! diff --git a/runtime/syntax/generator/vim.vim.base b/runtime/syntax/generator/vim.vim.base index 650f4161..d7368892 100644 --- a/runtime/syntax/generator/vim.vim.base +++ b/runtime/syntax/generator/vim.vim.base @@ -2,7 +2,7 @@ " Language: Vim script " Maintainer: Hirohito Higashi " Doug Kearns -" Last Change: 2025 Oct 22 +" Last Change: 2026 Feb 20 " Former Maintainer: Charles E. Campbell " DO NOT CHANGE DIRECTLY. @@ -36,7 +36,7 @@ syn cluster vimCommentGroup contains=vimTodo,@Spell " GEN_SYN_VIM: vimCommand normal, START_STR='syn keyword vimCommand contained', END_STR='nextgroup=vimBang' " Lower priority :syn-match to allow for :command/function() distinction -syn match vimCommand "\" nextgroup=vimBang +" :chdir is handled specially elsewhere syn match vimCommand "\" nextgroup=vimBang syn match vimCommand "\" nextgroup=vimBang syn match vimCommand "\" nextgroup=vimBang @@ -246,7 +246,7 @@ syn match vimNumber '\<0z\%(\x\x\)\+\%(\.\%(\x\x\)\+\)*' skipwhite nextgroup=@vi syn case match " All vimCommands are contained by vimIsCommand. {{{2 -syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimCall,vimCatch,vimCommandModifier,vimConst,vimDoautocmd,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelpgrep,vimHighlight,vimImport,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl +syn cluster vimCmdList contains=vimAbb,vimAddress,vimAt,vimAutocmd,vimAugroup,vimBehave,vimBreakadd,vimBreakdel,vimBreaklist,vimCall,vimCatch,vimCd,vimCommandModifier,vimConst,vimDoautocmd,vimDebug,vimDebuggreedy,vimDef,vimDefFold,vimDefer,vimDelcommand,vimDelFunction,vimDoCommand,@vimEcho,vimElse,vimEnddef,vimEndfunction,vimEndif,vimEval,vimExecute,vimIsCommand,vimExtCmd,vimExFilter,vimExMark,vimFiletype,vimFor,vimFunction,vimFunctionFold,vimGrep,vimGrepAdd,vimGlobal,vimHelp,vimHelpgrep,vimHighlight,vimHistory,vimImport,vimLanguage,vimLet,vimLoadkeymap,vimLockvar,vimMake,vimMap,vimMark,vimMatch,vimNotFunc,vimNormal,vimProfdel,vimProfile,vimPrompt,vimRedir,vimSet,vimSleep,vimSort,vimSyntax,vimSyntime,vimSynColor,vimSynLink,vimTerminal,vimThrow,vimUniq,vimUnlet,vimUnlockvar,vimUnmap,vimUserCmd,vimVimgrep,vimVimgrepadd,vimWincmd,vimMenu,vimMenutranslate,@vim9CmdList,@vimExUserCmdList,vimLua,vimMzScheme,vimPerl,vimPython,vimPython3,vimPythonX,vimRuby,vimTcl syn cluster vim9CmdList contains=vim9Abstract,vim9Class,vim9Const,vim9Enum,vim9Export,vim9Final,vim9For,vim9Interface,vim9Type,vim9Var syn match vimCmdSep "\\\@1" nextgroup=vimBehaveBang,vimBehaveModel,vi syn match vimBehaveBang contained "\a\@1<=!" nextgroup=vimBehaveModel skipwhite syn keyword vimBehaveModel contained mswin xterm +" Break* commands {{{2 +" =============== +syn keyword vimBreakaddFunc contained func skipwhite nextgroup=vimBreakpointFunctionLine,vimBreakpointFunction +syn keyword vimBreakaddFile contained file skipwhite nextgroup=vimBreakpointFileLine,vimBreakpointFilename +syn keyword vimBreakaddHere contained here skipwhite nextgroup=vimComment,vim9Comment,vimSep +syn keyword vimBreakaddExpr contained expr skipwhite nextgroup=@vimExprList + +syn match vimBreakpointGlob contained "*" skipwhite nextgroup=vimComment,vim9Comment,vimSep +syn match vimBreakpointNumber contained "\<\d\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep + +syn cluster vimBreakpointArg contains=vimBreakaddFunc,vimBreakaddFile,vimBreakaddHere,vimBreakaddExpr + +syn match vimBreakpointFunction contained "\<\%(\*\|\w\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep +syn match vimBreakpointFilename contained "\<\%(\*\|\f\)\+\>" skipwhite nextgroup=vimComment,vim9Comment,vimSep +syn match vimBreakpointFunctionLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFunction +syn match vimBreakpointFileLine contained "\<\d\+\>" skipwhite nextgroup=vimBreakpointFilename + +syn keyword vimBreakadd breaka[dd] skipwhite nextgroup=@vimBreakpointArg +syn keyword vimBreakdel breakd[el] skipwhite nextgroup=@vimBreakpointArg,vimBreakpointNumber,vimBreakpointGlob +syn keyword vimBreaklist breakl[ist] skipwhite nextgroup=vimComment,vim9Comment,vimSep + " Call {{{2 " ==== syn match vimCall "\" skipwhite nextgroup=vimVar,@vimFunc +" Cd: {{{2 +" == +" GEN_SYN_VIM: vimCommand cd, START_STR='syn keyword vimCd', END_STR='skipwhite nextgroup=vimCdBang,vimCdArg,vimComment,vim9Comment,vimCmdSep' +syn match vimCd "\" skipwhite nextgroup=vimCdBang,vimCdArg,vimComment,vim9Comment,vimCmdSep +syn region vimCdArg contained + \ start=+["#|]\@!\S+ + \ end="\ze\s*$" + \ end=+\ze\s*\\\@1" contains=vimCount " Defer {{{2 " ===== -syn match vimDefer "\" skipwhite nextgroup=@vimFunc +syn match vimDefer "\" skipwhite nextgroup=@vimFunc,vim9LambdaParams + +" *Do commands {{{2 +" ============ +syn match vimDoCommandBang contained "\a\@1<=!" skipwhite nextgroup=@vimCmdList + +syn keyword vimDoCommand argdo bufd[o] skipwhite nextgroup=vimDoCommandBang,@vimCmdList +syn keyword vimDoCommand tabd[o] wind[o] skipwhite nextgroup=@vimCmdList +syn keyword vimDoCommand cdo cfd[o] skipwhite nextgroup=vimDoCommandBang,@vimCmdList +syn keyword vimDoCommand ld[o] lfd[o] skipwhite nextgroup=vimDoCommandBang,@vimCmdList +syn keyword vimDoCommand foldd[oopen] folddoc[losed] skipwhite nextgroup=@vimCmdList " Exception Handling {{{2 syn keyword vimThrow th[row] skipwhite nextgroup=@vimExprList @@ -340,6 +389,16 @@ endif syn keyword vimFTCmd contained filet[ype] syn keyword vimFTOption contained detect indent off on plugin +" History {{{2 +" ======= +" TODO: handle Vim9 "history" variable assignment (like :wincmd, but a common variable name) +syn keyword vimHistory his[tory] skipwhite nextgroup=vimHistoryName,vimHistoryRange,vimCmdSep,vimComment,vim9Comment +syn keyword vimHistoryName contained c[md] s[earch] e[xpr] i[nput] d[ebug] a[ll] skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment +syn match vimHistoryName contained "[:/?=@>]" skipwhite nextgroup=vimHistoryRange,vimCmdSep,vimComment,vim9Comment +syn match vimHistoryRange contained "-\=\<\d\+\>\%(\s*,\)\=" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment +syn match vimHistoryRange contained ",\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment +syn match vimHistoryRange contained "-\=\<\d\+\s*,\s*-\=\d\+\>" skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment + " Import {{{2 " ====== syn keyword vimImportAutoload contained autoload skipwhite nextgroup=vimImportFilename @@ -381,19 +440,29 @@ endif syn match vimImportName contained "\%(\" skipwhite nextgroup=@vimComment syn match vimImport "\" skipwhite nextgroup=vimImportAutoload,vimImportFilename +" Language {{{2 +" ======== +syn keyword vimLanguage lan[guage] skipwhite nextgroup=@vimLanguageName,vimLanguageCategory,vimSep,vimComment,vim9Comment +syn keyword vimLanguageCategory contained col[late] cty[pe] mes[sages] tim[e] skipwhite nextgroup=@vimLanguageName + +" [language[_territory][.codeset][@modifier]] and the reserved "C" and "POSIX" +syn match vimLanguageName contained "[[:alnum:]][[:alnum:]._@-]*[[:alnum:]]" nextgroup=vimSep,vimComment,vim9Comment +syn keyword vimLanguageNameReserved contained C POSIX nextgroup=vimSep,vimComment,vim9Comment +syn cluster vimLanguageName contains=vimLanguageName,vimLanguageNameReserved + " 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=@vimCmdList,vimFilter,@vimFunc,vimLineComment,vimSpecFile,vimOper,vimNumber,vimOperParen,@vimComment,vimString,vimSubst,vimRegister,vimCmplxRepeat,vimNotation,vimCtrlChar,vimContinue " define VimFolda syn region vimAugroup - \ start="\\ze\s\+\%([eE][nN][dD]\)\@!\S\+" + \ start="\\ze\s\+\%([eE][nN][dD]\%($\|[[:space:]|"#]\)\)\@!\S" \ matchgroup=vimAugroupKey - \ end="\\ze\s\+[eE][nN][dD]\>" + \ end="\\s\+[eE][nN][dD]\>" + syn match vimAugroupError "\" syn region vimCompoundType contained matchgroup=vimType start="\" -syn cluster vimType contains=vimType,vimTypeAny,vimCompoundType,vimUserType +syn cluster vimType contains=vimType,vimTypeAny,vimTypeObject,vimCompoundType,vimUserType " Classes, Enums And Interfaces: {{{2 " ============================= @@ -676,7 +753,7 @@ if s:vim9script " FIXME: don't match as dictionary keys, remove when operators are not " shared between Vim9 and legacy script syn match vim9This contained "\.\@1:\@!" - " super must be folowed by '.' + " super must be followed by '.' syn match vim9Super contained "\.\@1" matchgroup=vimCommand end="\" contains=@vim9ClassBodyList transparent @@ -807,6 +884,10 @@ syn match vimSpecFile "\s%<"ms=s+1,me=e-1 nextgroup=vimSpecFileMod,vimSubst1 syn match vimSpecFile "#\d\+\|[#%]<\>" nextgroup=vimSpecFileMod,vimSubst1 syn match vimSpecFileMod "\(:[phtre]\)\+" contained +syn match vimSpecFile contained "%[ \t:]"me=e-1 nextgroup=vimSpecFileMod +syn match vimSpecFile contained excludenl "%$" nextgroup=vimSpecFileMod +syn match vimSpecFile contained "%<"me=e-1 nextgroup=vimSpecFileMod + " User-Specified Commands: {{{2 " ======================= syn cluster vimUserCmdList contains=@vimCmdList,vimCmplxRepeat,@vimComment,vimCtrlChar,vimEscapeBrace,@vimFunc,vimNotation,vimNumber,vimOper,vimRegister,vimSpecFile,vimString,vimSubst,vimSubstRep,vimSubstRange @@ -1086,11 +1167,11 @@ syn region vimLetVarSubscript contained \ skipwhite nextgroup=vimLetVarSubscript,vimLetHeredoc \ contains=@vimExprList -VimL syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars +syn keyword vimUnlet unl[et] skipwhite nextgroup=vimUnletBang,vimUnletVars syn match vimUnletBang contained "\a\@1<=!" skipwhite nextgroup=vimUnletVars syn region vimUnletVars contained - \ start="$\I\|\h" skip=+\n\s*\%(\\\|"\\ \)\|^\s*"\\ + end="$" end="\ze[|"]" - \ nextgroup=vimCmdSep,vimComment + \ start="$\I\|\h" skip=+\n\s*\%(\\\|["#]\\ \)\|^\s*["#]\\ + end="$" end=+\ze\s*[|"#]+ + \ skipwhite nextgroup=vimCmdSep,vimComment,vim9Comment \ contains=@vimContinue,vimEnvvar,vimVar,vimVimVar " TODO: type error after register or environment variables (strings) @@ -1130,6 +1211,14 @@ syn region vim9VariableList contained start="\[" end="]" contains=@vimContinue,@ syn match vim9VariableTypeSep contained "\S\@1<=:\%(\s\|\n\)\@=" skipwhite nextgroup=@vim9VariableType syn keyword vim9VariableType contained blob bool channel float job number string void skipwhite nextgroup=vimLetHeredoc syn keyword vim9VariableTypeAny contained any skipwhite nextgroup=vimLetHeredoc +syn match vim9VariableTypeObject contained "\" skipwhite nextgroup=vimLetHeredoc syn region vim9VariableCompoundType contained \ matchgroup=vim9VariableType @@ -1155,7 +1244,7 @@ syn region vim9VariableCompoundType contained \ transparent syn match vim9VariableUserType contained "\<\%(\h\w*\.\)*\u\w*\>" skipwhite nextgroup=vimLetHeredoc -syn cluster vim9VariableType contains=vim9VariableType,vim9VariableTypeAny,vim9VariableCompoundType,vim9VariableUserType +syn cluster vim9VariableType contains=vim9VariableType,vim9VariableTypeAny,vim9VariableTypeObject,vim9VariableCompoundType,vim9VariableUserType " Lockvar and Unlockvar: {{{2 " ===================== @@ -1366,11 +1455,23 @@ syn region vimMakeArgs contained syn match vimMakeBarEscape contained "\\|" syn match vimMakeBang contained "\a\@1<=!" skipwhite nextgroup=vimMakeArgs,vimCmdSep +" Help*: {{{2 +" ===== +syn match vimHelp "\" skipwhite nextgroup=vimHelpBang,vimHelpArg,vimHelpNextCommand +" TODO: match wildcards, ignoring exceptions? +syn region vimHelpArg contained + \ start="\S" + \ matchgroup=Special + \ end="\%(@\a\a\)\=\ze\s*\%($\|\%x0d\|\%x00\||[^|]\)" + \ oneline +syn match vimHelpNextCommand contained "\ze|[^|]" skipwhite nextgroup=vimCmdSep +syn match vimHelpBang contained "\a\@1<=!" skipwhite nextgroup=vimHelpArg,vimHelpNextCommand + syn match vimHelpgrep "\" skipwhite nextgroup=vimHelpgrepBang,vimHelpgrepPattern syn region vimHelpgrepPattern contained \ start="\S" \ matchgroup=Special - \ end="@\w\w\>" + \ end="@\a\a\>" \ end="$" \ contains=@vimSubstList \ oneline @@ -1565,6 +1666,15 @@ syn keyword vimProfdelArg contained file skipwhite nextgroup=vimProfilePattern syn keyword vimProfdelArg contained here skipwhite nextgroup=vimCmdSep,@vimComment syn match vimProfdel "\" skipwhite nextgroup=vimProfdelArg +" Prompt{find,repl}: {{{2 +" ================= +syn region vimPromptArg contained + \ start="\S" + \ skip=+\n\s*\%(\\\|["#]\\ \)+ + \ end="$" + \ contains=@vimContinue +syn keyword vimPrompt promptf[ind] promptr[epl] skipwhite nextgroup=vimPromptArg + " Redir: {{{2 " ===== syn match vimRedir "\" skipwhite nextgroup=vimRedirBang,vimRedirFileOperator,vimRedirVariableOperator,vimRedirRegister,vimRedirEnd @@ -1674,17 +1784,32 @@ Vim9 syn match vimWincmd "\s\=\\ze\s\+=\s*\%([#|]\|$\)" skipwhite n " Syntax: {{{2 "======= -syn match vimGroupList contained "[^[:space:],]\+\%(\s*,\s*[^[:space:],]\+\)*" contains=vimGroupSpecial -syn region vimGroupList contained start=/^\s*["#]\\ \|^\s*\\\|[^[:space:],]\+\s*,/ skip=/\s*\n\s*\%(\\\|["#]\\ \)\|^\s*\%(\\\|["#]\\ \)/ end=/[^[:space:],]\s*$\|[^[:space:],]\ze\s\+\w/ contains=@vimContinue,vimGroupSpecial +syn region vimGroupList contained + \ start="\S" + \ skip=+\n\s*\%(\\\|["#]\\ \)+ + "\ need to consume the whitespace + \ end="\s"he=e-1 + \ end="$" + \ contains=@vimGroupListContinue,vimGroupSpecial,vimGroupListContinueComma syn keyword vimGroupSpecial contained ALL ALLBUT CONTAINED TOP +syn match vimGroupListComma contained "," +syn match vimGroupListContinueComma contained "\s\+,\s*\|,\s\+" contains=vimGroupListComma +syn match vimGroupListContinueComma contained "\s*,\s*\%(\n\s*\%(\\\s\+\|["#]\\ .*\)\)\+" contains=@vimGroupListContinue,vimGroupListComma + +syn match vimGroupListEquals contained "=" skipwhite skipnl nextgroup=vimGroupListContinueStart,vimGroupList +" the first continuation line does not terminate the list at whitepace after \ +syn match vimGroupListContinueStart contained "^\%(\s*["#]\\ .*\n\)*\s*\\\s\+" skipwhite nextgroup=vimGroupList contains=@vimGroupListContinue transparent + +syn match vimGroupListContinue contained "^\s*\\" skipwhite skipnl nextgroup=@vimGroupListContinue,vimGroupListContinueComma contains=vimWhitespace +syn match vimGroupListContinueComment contained '^\s*["#]\\ .*' skipwhite skipnl nextgroup=@vimGroupListContinue contains=vimWhitespace +syn cluster vimGroupListContinue contains=vimGroupListContinue,vimGroupListContinueComment if !exists("g:vimsyn_noerror") && !exists("g:vimsyn_novimsynerror") - syn match vimSynError contained "\i\+" - syn match vimSynError contained "\i\+=" nextgroup=vimGroupList + syn match vimSynError contained "\i\+" endif -syn match vimSynContains contained "\" skipwhite nextgroup=vimGroupListEquals +syn match vimSynContainedin contained "\" skipwhite nextgroup=vimGroupListEquals +syn match vimSynNextgroup contained "\" skipwhite nextgroup=vimGroupListEquals if has("conceal") " no whitespace allowed after '=' syn match vimSynCchar contained "\" skipwhite nextgroup=vimGroupListEquals +syn match vimGroupRem contained "\" skipwhite nextgroup=vimGroupListEquals " Syntax: conceal {{{2 syn match vimSynType contained "\" skipwhite nextgroup=vimSynConceal,vimSynConcealError @@ -1731,16 +1856,17 @@ syn match vimSynIskeyword contained "\S\+" contains=vimSynIskeywordSep syn match vimSynIskeywordSep contained "," " Syntax: include {{{2 -syn keyword vimSynType contained include skipwhite nextgroup=vimGroupList +syn keyword vimSynType contained include skipwhite nextgroup=vimSynIncludeCluster +syn match vimSynIncludeCluster contained "@[_a-zA-Z0-9]\+\>" " Syntax: keyword {{{2 -syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynKeyContainedin +syn cluster vimSynKeyGroup contains=@vimContinue,vimSynCchar,vimSynNextgroup,vimSynKeyOpt,vimSynContainedin syn keyword vimSynType contained keyword skipwhite nextgroup=vimSynKeyRegion syn region vimSynKeyRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynKeyGroup syn match vimSynKeyOpt contained "\%#=1\<\%(conceal\|contained\|transparent\|skipempty\|skipwhite\|skipnl\)\>" " Syntax: match {{{2 -syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment +syn cluster vimSynMtchGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynError,vimSynMtchOpt,vimSynNextgroup,vimSynRegPat,vimNotation,vimMtchComment syn keyword vimSynType contained match skipwhite nextgroup=vimSynMatchRegion syn region vimSynMatchRegion contained keepend matchgroup=vimGroupName start="\h\w*\>" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynMtchGroup syn match vimSynMtchOpt contained "\%#=1\<\%(conceal\|transparent\|contained\|excludenl\|keepend\|skipempty\|skipwhite\|display\|extend\|skipnl\|fold\)\>" @@ -1750,9 +1876,9 @@ syn keyword vimSynType contained enable list manual off on reset " Syntax: region {{{2 syn cluster vimSynRegPatGroup contains=@vimContinue,vimPatSep,vimNotPatSep,vimSynPatRange,vimSynNotPatRange,vimSubstSubstr,vimPatRegion,vimPatSepErr,vimNotation -syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp +syn cluster vimSynRegGroup contains=@vimContinue,vimSynCchar,vimSynContains,vimSynContainedin,vimSynNextgroup,vimSynRegOpt,vimSynReg,vimSynMtchGrp syn keyword vimSynType contained region skipwhite nextgroup=vimSynRegion -syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup +syn region vimSynRegion contained keepend matchgroup=vimGroupName start="\h\w*" skip=+\\\\\|\\|\|\n\s*\%(\\\|"\\ \)+ matchgroup=vimCmdSep end="|\|$" contains=@vimSynRegGroup syn match vimSynRegOpt contained "\%#=1\<\%(conceal\%(ends\)\=\|transparent\|contained\|excludenl\|skipempty\|skipwhite\|display\|keepend\|oneline\|extend\|skipnl\|fold\)\>" syn match vimSynReg contained "\<\%(start\|skip\|end\)=" nextgroup=vimSynRegPat syn match vimSynMtchGrp contained "matchgroup=" nextgroup=vimGroup,vimHLGroup @@ -1923,10 +2049,10 @@ VimFoldl syn region vimLuaHeredoc contained " [-- mzscheme --] {{{3 if s:interfaces =~# 'm' - let s:iskKeep = &isk + let s:iskKeep = &l:isk syn include @vimMzSchemeScript syntax/scheme.vim unlet b:current_syntax - let &isk = s:iskKeep + let &l:isk = s:iskKeep endif syn keyword vimMzScheme mz[scheme] skipwhite nextgroup=vimMzSchemeHeredoc,vimMzSchemeStatement @@ -2230,7 +2356,7 @@ Vim9 syn region vim9LineComment start=+^[ \t:]*\zs#.*$+ skip=+\n\s*\%(\\\|#\\ \) VimL syn region vimLineComment start=+^[ \t:]*\zs".*$+ skip=+\n\s*\%(\\\|"\\ \)+ end="$" contains=@vimCommentGroup,vimCommentString,vimCommentTitle extend syn match vimCommentTitle '"\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vimCommentTitleLeader,vimTodo,@vimCommentGroup -syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\u\w*\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup +syn match vim9CommentTitle '#\s*\%([sS]:\|\h\w*#\)\=\%([A-DF-Z]\w*\|E\%(\d\{1,4}\>\)\@!\w*\)\(\s\+\u\w*\)*:'hs=s+1 contained contains=vim9CommentTitleLeader,vimTodo,@vimCommentGroup " allowed anywhere in the file if !s:vim9script @@ -2333,8 +2459,18 @@ if !exists("skip_vim_syntax_inits") hi def link vimBehaveModel vimBehave hi def link vimBehave vimCommand hi def link vimBracket Delimiter + hi def link vimBreakaddFunc Special + hi def link vimBreakaddFile Special + hi def link vimBreakaddHere Special + hi def link vimBreakaddExpr Special + hi def link vimBreakpointGlob Special + hi def link vimBreakadd vimCommand + hi def link vimBreakdel vimCommand + hi def link vimBreaklist vimCommand hi def link vimCall vimCommand hi def link vimCatch vimCommand + hi def link vimCd vimCommand + hi def link vimCdBang vimBang hi def link vimCmplxRepeat SpecialChar hi def link vimCommand Statement hi def link vimCommandModifier vimCommand @@ -2350,6 +2486,7 @@ if !exists("skip_vim_syntax_inits") hi def link vimContinueString vimString hi def link vimCount Number hi def link vimCtrlChar SpecialChar + hi def link vimDebug vimCommand hi def link vimDebuggreedy vimCommand hi def link vimDef vimCommand hi def link vimDefBang vimBang @@ -2362,6 +2499,8 @@ if !exists("skip_vim_syntax_inits") hi def link vimDelfunctionBang vimBang hi def link vimDoautocmd vimCommand hi def link vimDoautocmdMod Special + hi def link vimDoCommand vimCommand + hi def link vimDoCommandBang vimBang hi def link vimEcho vimCommand hi def link vimEchohlNone vimGroup hi def link vimEchohl vimCommand @@ -2397,11 +2536,16 @@ if !exists("skip_vim_syntax_inits") hi def link vimGrep vimCommand hi def link vimGrepadd vimCommand hi def link vimGrepBang vimBang + hi def link vimGroup Type hi def link vimGroupAdd vimSynOption + hi def link vimGroupListEquals vimSynOption + hi def link vimGroupListContinue vimContinue + hi def link vimGroupListContinueComment vimContinueComment hi def link vimGroupName Normal hi def link vimGroupRem vimSynOption hi def link vimGroupSpecial Special - hi def link vimGroup Type + hi def link vimHelp vimCommand + hi def link vimHelpBang vimBang hi def link vimHelpgrep vimCommand hi def link vimHiAttrib PreProc hi def link vimHiBang vimBang @@ -2422,6 +2566,8 @@ if !exists("skip_vim_syntax_inits") hi def link vimHiStartStop vimHiTerm hi def link vimHiTerm Type hi def link vimHLGroup vimGroup + hi def link vimHistory vimCommand + hi def link vimHistoryName Special hi def link vimImport vimCommand hi def link vimImportAutoload Special hi def link vimImportAs vimImport @@ -2431,6 +2577,9 @@ if !exists("skip_vim_syntax_inits") hi def link vimKeymapTailComment vimComment hi def link vimLambdaBrace Delimiter hi def link vimLambdaOperator vimOper + hi def link vimLanguage vimCommand + hi def link vimLanguageCategory Special + hi def link vimLanguageNameReserved Constant hi def link vimLet vimCommand hi def link vimLetHeredoc vimString hi def link vimLetHeredocStart Special @@ -2491,6 +2640,7 @@ if !exists("skip_vim_syntax_inits") hi def link vimProfileBang vimBang hi def link vimProfdel vimCommand hi def link vimProfdelArg vimSpecial + hi def link vimPrompt vimCommand hi def link vimPython vimCommand hi def link vimPython3 vimCommand hi def link vimPythonX vimCommand @@ -2558,7 +2708,7 @@ if !exists("skip_vim_syntax_inits") hi def link vimSynFoldlevel Type hi def link vimSynIskeyword Type hi def link vimSynIskeywordSep Delimiter - hi def link vimSynKeyContainedin vimSynContains + hi def link vimSynContainedin vimSynContains hi def link vimSynKeyOpt vimSynOption hi def link vimSynMtchGrp vimSynOption hi def link vimSynMtchOpt vimSynOption @@ -2586,6 +2736,8 @@ if !exists("skip_vim_syntax_inits") hi def link vimTodo Todo hi def link vimType Type hi def link vimTypeAny vimType + hi def link vimTypeObject vimType + hi def link vimTypeObjectBracket vimTypeObject hi def link vimUniq vimCommand hi def link vimUniqBang vimBang hi def link vimUniqOptions Special @@ -2677,7 +2829,9 @@ if !exists("skip_vim_syntax_inits") hi def link vim9TypeEquals vimOper hi def link vim9Variable vimVar hi def link vim9VariableType vimType - hi def link vim9VariableTypeAny vimType + hi def link vim9VariableTypeAny vimTypeAny + hi def link vim9VariableTypeObject vimTypeObject + hi def link vim9VariableTypeObjectBracket vimTypeObjectBracket hi def link vim9Var vimCommand hi def link vim9Vim9ScriptArg Special hi def link vim9Vim9Script vimCommand diff --git a/runtime/syntax/glimmer.vim b/runtime/syntax/glimmer.vim new file mode 100644 index 00000000..67555db8 --- /dev/null +++ b/runtime/syntax/glimmer.vim @@ -0,0 +1,51 @@ +" Vim syntax file +" Language: Glimmer +" Maintainer: Devin Weaver +" Last Change: 2026 Feb 20 +" Origin: https://github.com/joukevandermaas/vim-ember-hbs +" Credits: Jouke van der Maas +" License: Same as Vim + +" Vim detects GJS/GTS files as {java,type}script.glimmer +" Vim will read the javascript/typescript syntax files first and set +" b:current_syntax accordingly then it will read the glimmer syntax file. +" This is why we use b:current_syntax to make sure we are in the correct state +" to continue. + +if exists('b:current_syntax') && b:current_syntax !~# '\v%(type|java)script' + finish +endif + +let base_syntax = b:current_syntax +unlet! b:current_syntax + +let s:cpo_save = &cpo +set cpo&vim + +syntax include @hbs syntax/handlebars.vim + +if base_syntax == "javascript" + syntax region glimmerTemplateBlock + \ start="" + \ contains=@hbs + \ keepend fold + + let b:current_syntax = "javascript.glimmer" +else + " syntax/typescript.vim adds typescriptTypeCast which is in conflict with + "